Re: ata-related panic

From: Andre Guibert de Bruet <andy_at_siliconlandmark.com>
Date: Sat, 7 May 2005 18:14:23 -0400 (EDT)
[Replying to myself...]

On Thu, 5 May 2005, Andre Guibert de Bruet wrote:

> em0: link state changed to UP
> unknown: WARNING - ATA_IDENTIFY requeued due to channel reset LBA=0
> lock order reversal
> 1st 0xc50ae6e0 ATA state lock (ATA state lock) _at_ 
> /usr/src/sys/kern/kern_timeout.c:263
> 2nd 0xc4f73344 user map (user map) _at_ /usr/src/sys/vm/vm_map.c:2997
> KDB: stack backtrace:
> kdb_backtrace(c06dbd1b,c4f73344,c06eb71c,c06eb71c,c06eb79c) at 
> kdb_backtrace+0x2f
> witness_checkorder(c4f73344,9,c06eb79c,bb5,12b) at witness_checkorder+0x6d0
> _sx_xlock(c4f73344,c06eb79c,bb5,bd5,e900cac8) at _sx_xlock+0x7f
> _vm_map_lock_read(c4f73300,c06eb79c,bb5,100018a,deadc000) at 
> _vm_map_lock_read+0x4a
> vm_map_lookup(e900cb60,deadc000,1,e900cb64,e900cb54) at vm_map_lookup+0x2e
> vm_fault(c1059000,deadc000,1,0,c5015d80) at vm_fault+0x7f
> trap_pfault(e900cc2c,0,deadc126,e900cc0c,deadc126) at trap_pfault+0x166
> trap(c0550008,c0780028,28,c5365d48,c5365d48) at trap+0x350
> calltrap() at calltrap+0x5
> --- trap 0xc, eip = 0xc0541af4, esp = 0xe900cc6c, ebp = 0xe900cc6c ---
> device_get_softc(deadc0de,107,1,c50ae6e0,c50ae6e0) at device_get_softc+0x6
> ata_timeout(c5365d48,0,c06d90a7,107,c046cb91) at ata_timeout+0x1d
> softclock(0,0,c06d585c,256,c0735d60) at softclock+0x242
> ithread_loop(c5019400,e900cd38,c06d5647,30d,c5019400) at ithread_loop+0x159
> fork_exit(c0513923,c5019400,e900cd38) at fork_exit+0xc2
> fork_trampoline() at fork_trampoline+0x8
> --- trap 0x1, eip = 0, esp = 0xe900cd6c, ebp = 0 ---
>
>
> Fatal trap 12: page fault while in kernel mode
> cpuid = 0; apic id = 00
> fault virtual address   = 0xdeadc126
> fault code              = supervisor read, page not present
> instruction pointer     = 0x20:0xc0541af4
> stack pointer           = 0x28:0xe900cc6c
> frame pointer           = 0x28:0xe900cc6c
> code segment            = base 0x0, limit 0xfffff, type 0x1b
>                        = DPL 0, pres 1, def32 1, gran 1
> processor eflags        = interrupt enabled, resume, IOPL = 0
> current process         = 85 (swi4: clock sio)
> [thread pid 85 tid 100076 ]
> Stopped at      device_get_softc+0x6:   movl    0x48(%eax),%eax

This turned out to be caused by a jumper misconfiguration on the only IDE 
device on this system. It was connected to the first connector on the 
cable and set as Slave.

I am baffled at how it worked before. From the boot -v that I managed to 
get, it appeared that the ata code detected a 40-wire cable (Not the case) 
and caused a bus reset only to panic because of a timeout. My ata-fu is 
nill but I am willing to try different things to track down what happened, 
in order to handle this case better.

The motherboard all of this fun stuff happened on is an Intel SE7520BD2V. 
More info, including kernel config file can be found at 
http://bling.properkernel.com/freebsd/

Cheers,
Andy

/*  Andre Guibert de Bruet  * 6f43 6564 7020 656f 2e74 4220 7469 6a20 */
/*   Code poet / Sysadmin   * 636f 656b 2e79 5320 7379 6461 696d 2e6e */
/*   GSM: +1 734 846 8758   * 5520 494e 2058 6c73 7565 6874 002e 0000 */
/* WWW: siliconlandmark.com *      Tormenting bytes since 1980.       */
Received on Sat May 07 2005 - 20:14:30 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:34 UTC