[ide-scsi] hard lock while burning a cd (in 2.4.x)

From: Carsten Weinhold (carsten.weinhold@gmx.de)
Date: Thu Mar 07 2002 - 08:00:21 EST


Hi,

I recently experienced a hard lock while burning a cd. I was able to
reproduce it with kernel 2.4.17, 2.4.18 and 2.4.19-pre2, other versions
untested. A friend of my mine could crash his machine, too, even though
his hardware is completely different.
It always happened when fixation or blanking of a CDRW finished while
trying to read from my DVD drive.

I've attached the OOPS output (processed by ksymoops) and a shell
script to reproduce the problem. However this only happened with the
following setup (and similar):

- DVD drive is master, CD burner is slave on the same IDE channel
- both drives operate in SCSI-emulation (!important!)
- DMA is on (both drives)

Deactivating DMA for the CD burner or using the DVD drive as an ATAPI
device keeps the computer alive. But the DVD drive still doesn't read
while fixation/blanking is done (causing a DMA timeout on the DVD
drive).

Namely, I got the following warnings/errors:

scsi : aborting command due to timeout : pid 9349, scsi0, channel 0, id
0, lun 0
 Read (10) 00 00 00 41 61 00 00 01 00
(two more similar messages)
hdc: timeout waiting for DMA
ide_dmaproc: chipset supported ide_dma_timeout func only: 14
hdc: status error: status=0x68 { DriveReady DeviceFault DataRequest }
hdc: drive not ready for command
hdc: ATAPI reset complete
hdc: irq timeout: status=0xc0 { Busy }
hdc: ATAPI reset complete
hdc: irq timeout: status=0xc0 { Busy }

After a few seconds the kernel said oops:

-----------------------------------------------------------------------
ksymoops 2.4.3 on i686 2.4.18. Options used
     -V (default)
     -k /proc/ksyms (default)
     -l /proc/modules (default)
     -o /lib/modules/2.4.18/ (default)
     -m /boot/System.map-2.4.18 (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 ef84a752
c020d0c1
*pde = 00000000
Oops: 0002
CPU: 0
EIP: 0010:[<c020d0c1>] Tainted: P
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010002
   eax: ef84a5d2 ebx: cd602e40 ecx: 00000000 edx: cd602e40
   esi: c0362210 edi: 000000c0 ebp: c6e3c000 esp: c0303ebc
   ds: 0018 es: 0018 ss: 0018
Process swapper (pid: 0, stackpage=c0303000)
Stack: cd602e40 c0362210 000000c0 c03621d0 000000c0 00000000 cd602e40
cff75900
       c0362210 c01f6002 00000000 c142d680 c0362110 c142d680 c020d2d0
000000c0
       c01f6c00 c0362210 c02b8ba2 000000c0 c142d680 c01f6a70 00000000
c033a280
Call Trace: [<c01f6002>] [<c020d2d0>] [<c01f6c00>] [<c01f6a70>]
[<c011c2b2>]
   [<c011c32f>] [<c010acc6>] [<c011931a>] [<c0119420>] [<c011904a>]
[<c010812d>]
   [<c010a068>] [<c0105193>] [<c0110895>] [<c0110790>] [<c0105170>]
[<c0105202>]
   [<c0105000>] [<c0105027>]
Code: c7 80 80 01 00 00 00 00 07 00 83 7c 24 14 00 0f 84 9f 01 00

>>EIP; c020d0c0 <idescsi_end_request+70/280> <=====
Trace; c01f6002 <ide_error+122/170>
Trace; c020d2d0 <idescsi_pc_intr+0/240>
Trace; c01f6c00 <ide_timer_expiry+190/1e0>
Trace; c01f6a70 <ide_timer_expiry+0/1e0>
Trace; c011c2b2 <timer_bh+222/260>
Trace; c011c32e <do_timer+3e/70>
Trace; c010acc6 <timer_interrupt+66/120>
Trace; c011931a <bh_action+1a/50>
Trace; c0119420 <ksoftirqd+20/b0>
Trace; c011904a <do_softirq+5a/b0>
Trace; c010812c <do_IRQ+9c/b0>
Trace; c010a068 <call_do_IRQ+6/e>
Trace; c0105192 <default_idle+22/30>
Trace; c0110894 <apm_cpu_idle+104/140>
Trace; c0110790 <apm_cpu_idle+0/140>
Trace; c0105170 <default_idle+0/30>
Trace; c0105202 <cpu_idle+42/60>
Trace; c0105000 <_stext+0/0>
Trace; c0105026 <rest_init+26/30>
Code; c020d0c0 <idescsi_end_request+70/280>
00000000 <_EIP>:
Code; c020d0c0 <idescsi_end_request+70/280> <=====
   0: c7 80 80 01 00 00 00 movl $0x70000,0x180(%eax) <=====
Code; c020d0c6 <idescsi_end_request+76/280>
   7: 00 07 00
Code; c020d0ca <idescsi_end_request+7a/280>
   a: 83 7c 24 14 00 cmpl $0x0,0x14(%esp,1)
Code; c020d0ce <idescsi_end_request+7e/280>
   f: 0f 84 9f 01 00 00 je 1b4 <_EIP+0x1b4> c020d274
<idescsi_end_request+224/280>

 <0>Kernel panic: Aiee, killing interrupt handler!

1 warning issued. Results may not be reliable.
-----------------------------------------------------------------------

I'm using the hardware/software:
--------------------------------

AMD Athlon on AMD Irongate chipset
Pioneer DVD-ROM ATAPIModel DVD-114 0110 (hdc alias scd0)
SONY CD-RW CRX140E (hdd alias scd1)
Linux 2.4.18 (whith crypto patch)
cdrecord 1.10

Greetings,

Carsten

PS: Could you please CC all following messages to me: cw.news@gmx.net





-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Thu Mar 07 2002 - 21:01:03 EST