Can you try the attached patch?

-Corey

Mirko Parthey wrote:

>Hi,
>ipmi_smb does not work reliably on our Intel SE7520JR2 mainboard,
>it produces a kernel Oops in most cases. The linux kernel version is 2.6.15.4
>configured for Pentium 4 SMP, with the following openipmi patches applied:
>+ linux-base-2.6.15-v38.0.diff
>+ linux-i2c-2.6.15-v38.0.diff
>+ linux-i2c-i801-2.6.15-v38.0.diff
>+ linux-smb-2.6.15-v38.0.diff
>
>A successful load (which only happened once so far) looks like this:
># modprobe ipmi_smb dbg_probe=1 dbg=7
># cat /var/log/kern.log
>[...]
>Feb 13 13:20:23 guendel kernel: ipmi message handler version 38.0
>Feb 13 13:20:23 guendel kernel: IPMI SMB Interface driver
>Feb 13 13:20:23 guendel kernel: ipmi_smb: DMI specifies SSIF @ 0x42
>Feb 13 13:20:23 guendel kernel: ipmi_smb: DMI specifies slave address at 0x20
>Feb 13 13:20:23 guendel kernel: init_one_smb: Checking SMBus adapter 0: SMBus 
>I801 adapter at 0540
>Feb 13 13:20:23 guendel kernel: init_one_smb: found SMBus adapter: SMBus I801 
>adapter at 0540
>Feb 13 13:20:28 guendel kernel: smb_found_addr_proc: i2c_probe found device at 
>i2c address 42
>Feb 13 13:20:28 guendel kernel: **Enqueue 18 42: 1139833228.189232
>Feb 13 13:20:28 guendel kernel: DONE 1: state = 0, result=0.
>Feb 13 13:20:28 guendel kernel: **Enqueue 18 42: 1139833228.316161
>Feb 13 13:20:28 guendel kernel: DONE 2: state = 0.
>Feb 13 13:20:28 guendel kernel: DONE 1: state = 0, result=0.
>Feb 13 13:20:28 guendel kernel: **Enqueue 18 42: 1139833228.452152
>Feb 13 13:20:28 guendel kernel: DONE 2: state = 0.
>Feb 13 13:20:28 guendel kernel: DONE 1: state = 0, result=0.
>[...]
>
>An unsuccessful attempt is shown below:
># modprobe ipmi_smb dbg_probe=1 dbg=7
>Segmentation fault
># cat /var/log/kern.log
>[...]
>Feb 13 14:58:07 guendel kernel: ipmi message handler version 38.0
>Feb 13 14:58:07 guendel kernel: IPMI SMB Interface driver
>Feb 13 14:58:07 guendel kernel: ipmi_smb: DMI specifies SSIF @ 0x42
>Feb 13 14:58:07 guendel kernel: ipmi_smb: DMI specifies slave address at 0x20
>Feb 13 14:58:07 guendel kernel: init_one_smb: Checking SMBus adapter 0: SMBus 
>I801 adapter at 0540
>Feb 13 14:58:07 guendel kernel: init_one_smb: found SMBus adapter: SMBus I801 
>adapter at 0540
>Feb 13 14:58:07 guendel kernel: Unable to handle kernel NULL pointer 
>dereference at virtual address 00000001
>Feb 13 14:58:07 guendel kernel:  printing eip:
>Feb 13 14:58:07 guendel kernel: 00000001
>Feb 13 14:58:07 guendel kernel: *pde = 00000000
>Feb 13 14:58:07 guendel kernel: Oops: 0000 [#1]
>Feb 13 14:58:07 guendel kernel: SMP
>Feb 13 14:58:07 guendel kernel: Modules linked in: ipmi_smb ipmi_msghandler 
>parport_pc lp parport button ac battery ipv6 nfs lockd nfs_acl sunrpc dm_mod 
>ide_disk joydev hw_random evdev i2c_i801 psmouse i2c_core shpchp mousedev 
>serio_raw pci_hotplug pcspkr rtc ext3 jbd mbcache ide_cd cdrom ide_generic 
>piix e1000 generic ide_core uhci_hcd ehci_hcd usbcore thermal processor fan 
>sd_mod ata_piix libata scsi_mod
>Feb 13 14:58:07 guendel kernel: CPU:    0
>Feb 13 14:58:07 guendel kernel: EIP:    0060:[<00000001>]    Not tainted VLI
>Feb 13 14:58:07 guendel kernel: EFLAGS: 00210202   (2.6.15.4-mpa3-p4-smp)
>Feb 13 14:58:07 guendel kernel: EIP is at 0x1
>Feb 13 14:58:07 guendel kernel: eax: 00000001   ebx: df8ea180   ecx: c3013fe0  
> edx: f6ce3e2c
>Feb 13 14:58:07 guendel kernel: esi: df8ea180   edi: f88cade0   ebp: f88cae2c  
> esp: f6ce3de4
>Feb 13 14:58:07 guendel kernel: ds: 007b   es: 007b   ss: 0068
>Feb 13 14:58:07 guendel kernel: Process modprobe (pid: 6951, 
>threadinfo=f6ce2000 task=f7976030)
>Feb 13 14:58:07 guendel kernel: Stack: f8935c90 f88cade0 df8ea180 000003e8 
>df8ea180 000003e8 f88cae2c f8934f39
>Feb 13 14:58:07 guendel kernel:        f88cade0 df8ea180 000003e8 f88cada0 
>c3023a1c c32fc030 02cccf60 c3023560
>Feb 13 14:58:07 guendel kernel:        00000000 00000001 f6ce3e2c f6ce3e2c 
>f88cade0 df8ea180 f88cada0 df8ea1cc
>Feb 13 14:58:07 guendel kernel: Call Trace:
>Feb 13 14:58:07 guendel kernel:  [pg0+945478800/1070031872] 
>i2c_op_done+0x54/0x67 [i2c_core]
>Feb 13 14:58:07 guendel kernel:  [pg0+945475385/1070031872] 
>i2c_perform_op_wait+0x173/0x185 [i2c_core]
>Feb 13 14:58:07 guendel kernel:  [pg0+945478337/1070031872] 
>i2c_smbus_xfer+0x92/0x11f [i2c_core]
>Feb 13 14:58:07 guendel kernel:  [pg0+945477113/1070031872] 
>i2c_smbus_write_block_data+0x5d/0x65 [i2c_core]
>Feb 13 14:58:07 guendel kernel:  [vt_console_print+108/520] 
>vt_console_print+0x6c/0x208
>Feb 13 14:58:07 guendel kernel:  [pg0+948592767/1070031872] 
>ipmi_smb_detect_hardware+0xbf/0x364 [ipmi_smb]
>Feb 13 14:58:07 guendel kernel:  [pg0+948593530/1070031872] 
>smb_found_addr_proc+0x30/0x237 [ipmi_smb]
>Feb 13 14:58:07 guendel kernel:  [pg0+945475970/1070031872] 
>i2c_probe_address+0x9b/0xad [i2c_core]
>Feb 13 14:58:07 guendel kernel:  [pg0+945476077/1070031872] 
>i2c_probe+0x59/0x15f [i2c_core]
>Feb 13 14:58:07 guendel kernel:  [pg0+948593482/1070031872] 
>smb_found_addr_proc+0x0/0x237 [ipmi_smb]
>Feb 13 14:58:07 guendel kernel:  [pg0+948594188/1070031872] 
>attach_adapter+0x8b/0x92 [ipmi_smb]
>Feb 13 14:58:07 guendel kernel:  [pg0+948593482/1070031872] 
>smb_found_addr_proc+0x0/0x237 [ipmi_smb]
>Feb 13 14:58:07 guendel kernel:  [pg0+945473058/1070031872] 
>i2c_add_driver+0x91/0xb5 [i2c_core]
>Feb 13 14:58:07 guendel kernel:  [pg0+945434774/1070031872] 
>init_ipmi_smb+0x96/0xad [ipmi_smb]
>Feb 13 14:58:07 guendel kernel:  [sys_init_module+181/421] 
>sys_init_module+0xb5/0x1a5
>Feb 13 14:58:07 guendel kernel:  [sysenter_past_esp+84/117] 
>sysenter_past_esp+0x54/0x75
>Feb 13 14:58:07 guendel kernel: Code:  Bad EIP value.
>
>Regards,
>Mirko
>
>
>-------------------------------------------------------
>This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
>for problems?  Stop!  Download the new AJAX search engine that makes
>searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
>http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
>_______________________________________________
>Openipmi-developer mailing list
>[email protected]
>https://lists.sourceforge.net/lists/listinfo/openipmi-developer
>  
>

Index: linux-2.6.15/drivers/i2c/i2c-core.c
===================================================================
--- linux-2.6.15.orig/drivers/i2c/i2c-core.c
+++ linux-2.6.15/drivers/i2c/i2c-core.c
@@ -1407,6 +1407,7 @@ s32 i2c_smbus_xfer(struct i2c_adapter * 
 	entry->smbus.command = command;
 	entry->smbus.size = size;
 	entry->smbus.data = data;
+	entry->complete = NULL;
 
  	if (algo->smbus_start) {
  		i2c_perform_op_wait(adapter, entry);

Reply via email to