Hi,
Upgraded from kernel 2.4.26 to 2.4.31 and got problems with SATA SIL
controller.
This is the patch that fixes the problem (kernel VM access violation,
ksymoops output and this patch also attached):
========================================================================
--- linux-2.4.31/drivers/scsi/sata_sil.c 2005-06-01
04:56:56.000000000 +0400
+++ linux-2.4.31-lml/drivers/scsi/sata_sil.c 2005-08-16
00:27:43.000000000 +0400
@@ -427,7 +427,7 @@
writeb(cls, mmio_base + SIL_FIFO_R0);
writeb(cls, mmio_base + SIL_FIFO_W0);
writeb(cls, mmio_base + SIL_FIFO_R1);
- writeb(cls, mmio_base + SIL_FIFO_W2);
+ writeb(cls, mmio_base + SIL_FIFO_W1);
} else
printk(KERN_WARNING DRV_NAME "(%s): cache line size not
set. Driver may not function\n",
pci_name(pdev));
=========================================================================
I don't understand too much about the mechanics of this driver, but it
seems that symmetry is violated by sequence R0,W0,R1,W2
After replacing it with R0,W0,R1,W1 I got the driver working so far.
This is my lspci for the card:
00:0b.0 RAID bus controller: CMD Technology Inc Silicon Image SiI 3112
SATARaid Controller (rev 01)
Thank you,
--
V.L.
--
Linux Media Labs
[EMAIL PROTECTED] http://linuxmedialabs.com
ksymoops 2.4.4 on i686 2.4.31smp. Options used
-V (default)
-k /proc/ksyms (default)
-l /proc/modules (default)
-o /lib/modules/2.4.31smp/ (default)
-m /boot/System.map-2.4.31smp (default)
Warning: You did not tell me where to find symbol information. I will
assume that the log matches the kernel and modules that are running
right now and I'll use the default options above for symbol resolution.
If the current kernel and/or modules do not match the log, you can get
more accurate output by telling me the kernel version and where to find
map, modules, ksyms etc. ksymoops -h explains the options.
Unable to handle kernel paging request at virtual address d882b041
d8825672
*pde = 014f2067
Oops: 0002
CPU: 1
EIP: 0010:[<d8825672>] Not tainted
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010216
eax: d882b041 ebx: 00000002 ecx: 00000008 edx: 00000000
esi: 00000002 edi: d49ef478 ebp: c554bea8 esp: c554be84
ds: 0018 es: 0018 ss: 0018
Process modprobe (pid: 18207, stackpage=c554b000)
Stack: d882b041 d8825982 000001ae c02b41e0 d882ae00 d49ef400 d88260c0 d88261a0
d7fe3800 c554bec8 c01f1ff4 d7fe3800 d88260c0 00000000 d7fe3800 d88261a0
00000000 c554bee4 c01f209c d88261a0 d7fe3800 ffffffea 00000002 00000002
Call Trace: [<d8825982>] [<d88260c0>] [<d88261a0>] [<c01f1ff4>] [<d88260c0>]
[<d88261a0>] [<c01f209c>] [<d88261a0>] [<d8825825>] [<d88261a0>] [<c01229b9>]
[<d8825060>] [<d8825060>] [<d8825c68>] [<d8825060>] [<d8825c80>] [<c0126f22>]
[<d8825060>] [<c01095f7>]
Code: 88 18 8b 4d 0c 83 79 18 01 0f 84 cd 00 00 00 bf 00 00 c0 00
>>EIP; d8825672 <[sata_sil]sil_init_one+2c2/460> <=====
Trace; d8825982 <[sata_sil].text.end+c9/107>
Trace; d88260c0 <[sata_sil]sil_pci_tbl+0/0>
Trace; d88261a0 <[sata_sil]sil_pci_driver+0/40>
Trace; c01f1ff4 <pci_announce_device+34/70>
Trace; d88260c0 <[sata_sil]sil_pci_tbl+0/0>
Trace; d88261a0 <[sata_sil]sil_pci_driver+0/40>
Trace; c01f209c <pci_register_driver+6c/70>
Trace; d88261a0 <[sata_sil]sil_pci_driver+0/40>
Trace; d8825825 <[sata_sil]sil_init+15/80>
Trace; d88261a0 <[sata_sil]sil_pci_driver+0/40>
Trace; c01229b9 <sys_init_module+6c9/840>
Trace; d8825060 <[sata_sil]sil_get_device_cache_line+0/30>
Trace; d8825060 <[sata_sil]sil_get_device_cache_line+0/30>
Trace; d8825c68 <[sata_sil].rodata.end+1a5/5fd>
Trace; d8825060 <[sata_sil]sil_get_device_cache_line+0/30>
Trace; d8825c80 <[sata_sil].rodata.end+1bd/5fd>
Trace; c0126f22 <bh_action+82/e0>
Trace; d8825060 <[sata_sil]sil_get_device_cache_line+0/30>
Trace; c01095f7 <system_call+33/38>
Code; d8825672 <[sata_sil]sil_init_one+2c2/460>
00000000 <_EIP>:
Code; d8825672 <[sata_sil]sil_init_one+2c2/460> <=====
0: 88 18 mov %bl,(%eax) <=====
Code; d8825674 <[sata_sil]sil_init_one+2c4/460>
2: 8b 4d 0c mov 0xc(%ebp),%ecx
Code; d8825677 <[sata_sil]sil_init_one+2c7/460>
5: 83 79 18 01 cmpl $0x1,0x18(%ecx)
Code; d882567b <[sata_sil]sil_init_one+2cb/460>
9: 0f 84 cd 00 00 00 je dc <_EIP+0xdc>
Code; d8825681 <[sata_sil]sil_init_one+2d1/460>
f: bf 00 00 c0 00 mov $0xc00000,%edi
1 warning issued. Results may not be reliable.
--- linux-2.4.31/drivers/scsi/sata_sil.c 2005-06-01 04:56:56.000000000
+0400
+++ linux-2.4.31-lml/drivers/scsi/sata_sil.c 2005-08-16 00:27:43.000000000
+0400
@@ -427,7 +427,7 @@
writeb(cls, mmio_base + SIL_FIFO_R0);
writeb(cls, mmio_base + SIL_FIFO_W0);
writeb(cls, mmio_base + SIL_FIFO_R1);
- writeb(cls, mmio_base + SIL_FIFO_W2);
+ writeb(cls, mmio_base + SIL_FIFO_W1);
} else
printk(KERN_WARNING DRV_NAME "(%s): cache line size not set.
Driver may not function\n",
pci_name(pdev));