2.3.47-pre6 panics aic7xxx near pci_map_single() (direction = PCI_DMA_NONE)

From: Tigran Aivazian (tigran@aivazian.fsnet.co.uk)
Date: Sat Feb 19 2000 - 04:23:36 EST


Hi guys,

First of all, here is the oops

ksymoops 2.3.3 on i686 2.3.46. Options used
     -V (default)
     -k /proc/ksyms (default)
     -l /proc/modules (default)
     -o /lib/modules/2.3.47/ (specified)
     -m /usr/src/linux/System.map (default)

nvalid operand: 0000
CPU: 1
EIP: 0010:[<c01f1759>]
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010092
eax: 00000033 ebx: cff4e000 ecx: c02805bc edx: c02805bc
esi: cff58800 edi: cff56884 ebp: cff4b800 esp: c14c9e14
ds: 0018 es: 0018 ss: 0018
Process swapper (pid: 0, stackpage=c14c9000)
Stack: c0263b06 c0263c80 0000003a cff56884 cff56884 cff56884 c14c9f7c c0339160
       c021f751 00000002 cff58800 c01ed809 cff56801 cff58800 cff56884 cff4b800
       00000005 cff56884 d1006000 cff4b800 cffcc340 00000000 c01a6615 cff56884
Call Trace: [<c0263b06>] [<c0263c80>] [<c021f751>] [<c01ed809>] [<d1006000>] [<c01a6615>] [<c0264620>]
       [<d1006002>] [<c010964d>] [<c0109f54>] [<c01dc971>] [<c01f6ed7>] [<c01f71e3>] [<c01ecc71>] [<c01f7284>]
       [<c010db1d>] [<c010dedc>] [<c0108d60>] [<c0108d60>] [<c010c008>] [<c0108d60>] [<c0108d60>] [<c0100018>]
       [<c0108d85>] [<c0108dc2>] [<c01c14d1>]
Code: 0f 0b 83 c4 0c 89 f6 8b 94 24 98 00 00 00 81 c2 00 00 00 40

>>EIP; c01f1759 <aic7xxx_handle_seqint+1211/3b08> <=====
Trace; c0263b06 <size_sg_req_info+696/89b4>
Trace; c0263c80 <size_sg_req_info+810/89b4>
Trace; c021f751 <vgacon_scroll+1f1/218>
Trace; c01ed809 <aic7xxx_done+ad9/ae4>
Trace; d1006000 <_end+10cc5790/10d09790>
Trace; c01a6615 <ide_set_handler+95/ec>
Trace; c0264620 <size_sg_req_info+11b0/89b4>
Trace; d1006002 <_end+10cc5792/10d09790>
Trace; c010964d <__up+11/14>
Trace; c0109f54 <__up_wakeup+8/c>
Trace; c01dc971 <scsi_abort+11/208>
Trace; c01f6ed7 <aic7xxx_isr+27/354>
Trace; c01f71e3 <aic7xxx_isr+333/354>
Trace; c01ecc71 <aic7xxx_allocate_scb+265/284>
Trace; c01f7284 <do_aic7xxx_isr+80/128>
Trace; c010db1d <handle_IRQ_event+55/88>
Trace; c010dedc <do_IRQ+150/230>
Trace; c0108d60 <default_idle+0/28>
Trace; c0108d60 <default_idle+0/28>
Trace; c010c008 <ret_from_intr+0/20>
Trace; c0108d60 <default_idle+0/28>
Trace; c0108d60 <default_idle+0/28>
Trace; c0100018 <startup_32+18/a4>
Trace; c0108d85 <default_idle+25/28>
Trace; c0108dc2 <cpu_idle+3a/50>
Trace; c01c14d1 <vt_console_print+2d9/2f0>
Code; c01f1759 <aic7xxx_handle_seqint+1211/3b08>
00000000 <_EIP>:
Code; c01f1759 <aic7xxx_handle_seqint+1211/3b08> <=====
   0: 0f 0b ud2a <=====
Code; c01f175b <aic7xxx_handle_seqint+1213/3b08>
   2: 83 c4 0c addl $0xc,%esp
Code; c01f175e <aic7xxx_handle_seqint+1216/3b08>
   5: 89 f6 movl %esi,%esi
Code; c01f1760 <aic7xxx_handle_seqint+1218/3b08>
   7: 8b 94 24 98 00 00 00 movl 0x98(%esp,1),%edx
Code; c01f1767 <aic7xxx_handle_seqint+121f/3b08>
   e: 81 c2 00 00 00 40 addl $0x40000000,%edx

Aiee, killing interrupt handler
Kernel panic: Attempted to kill the idle task!

This corresponds to this code in
drivers/scsi/aic7xxx.c:aic7xxx_handle_seqint()

                scb->sg_list[0].address =
                        cpu_to_le32(pci_map_single(p->pdev, sense_buffer,
                            sizeof(cmd->sense_buffer),
                            scsi_to_pci_dma_dir(cmd->sc_data_direction)));
                hscb->data_pointer = scb->sg_list[0].address;

                scb->flags |= SCB_SENSE;

The comments talk about this being a fake command - should the driver has
set direction to one of SCSI_DATA_WRITE/SCSI_DATA_UNKNOWN/SCSI_DATA_READ
manually? I don't know.

Regards,
Tigran.

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



This archive was generated by hypermail 2b29 : Wed Feb 23 2000 - 21:00:23 EST