Date: Sun, 14 Apr 2002 15:46:02 +0200 (CEST) From: Matthias Andree <ma@dt.e-technik.uni-dortmund.de> To: FreeBSD-gnats-submit@FreeBSD.org Cc: sos@FreeBSD.org Subject: kern/37060: kernel panic with hw.ata.tags=1 in ata-disk.c:710 Message-ID: <200204141346.g3EDk2G00380@merlin.emma.line.org>
next in thread | raw e-mail | index | archive | help
>Number: 37060
>Category: kern
>Synopsis: kernel panic with hw.ata.tags=1 in ata-disk.c:710
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sun Apr 14 07:20:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator: Matthias Andree
>Release: FreeBSD 4.5-STABLE i386
>Organization:
>Environment:
System: FreeBSD emma1.emma.line.org 4.5-STABLE FreeBSD 4.5-STABLE #1: Sun Apr 14 13:33:10 CEST 2002 root@emma1.emma.line.org:/usr/src/sys/compile/MA i386
>Description:
FreeBSD 4-STABLE, checked out around local midnight, 2002-04-14.
When I use 'set hw.ata.tags=1' in the FreeBSD loader, the kernel panics (or
jumps into the debugger).
Leaving hw.ata.tags alone (not setting it) is fine, the machine boots up and
works properly.
This may be related to the "tagged acting up" recently reported on
freebsd-stable@freebsd.org
The last boot -v message is: "Creating DISK ad2"
(copied with pen & paper):
Fault trap 12: page fault while in kernel mode.
Fault virtual address:0x1c
fault code: supervisor read, page not present
current process: 0 (swapper)
irq mask: bio
DDB:
Stopped at: ad_service+0x30 testb $0x8,0x1c(%eax)
(Looks as though %eax is NULL)
trace:
ad_service +0x30
ad_transfer +0x253
ata_start +0x98
adstrategy
ar_rw
ar_promise_read_conf
ata_raiddisk_attach
ad_attach
ata_boot_attach
The offending line is 710 (as per gdb "info *(ad_service+0x30)"):
705 /* do we have to check the other device on this channel ? */
706 if (adp->device->channel->flags & ATA_QUEUED && change) {
707 int device = adp->device->unit;
708
709 if (adp->device->unit == ATA_MASTER) {
710 if (adp->device->channel->devices & ATA_ATA_SLAVE &&
711 ((struct ad_softc *)
712 (adp->device->channel->
713 device[ATA_DEV(ATA_SLAVE)].driver))->flags&AD_F_TAG_ENABLED)
714 device = ATA_SLAVE;
715 }
ata-related dmesg:
atapci0: <VIA 82C686 ATA66 controller> port 0xffa0-0xffaf at device 7.1 on pci0
ata0: at 0x1f0 irq 14 on atapci0
ata1: at 0x170 irq 15 on atapci0
atacontrol list:
ATA channel 0:
Master: ad0 <Maxtor 4W060H4/AAH41310> ATA/ATAPI rev 6
Slave: no device present
ATA channel 1:
Master: ad2 <IBM-DTLA-307045/TX6OA6AA> ATA/ATAPI rev 5
Slave: ad3 <WDC AC420400D/J58OA30K> ATA/ATAPI rev 4
(all do UDMA66 -- yes I know DTLA are unreliable, two out of seven died here)
FWIW, probably unrelated: the machine is to boot from ad3, which was ad0
before I bought the Maxtor drive and added a Fujitsu UWSCSI drive.
The machine also has a Promise PDC-20265R chip (onboard), but it's switched
off (jumper or BIOS, I don't recall) and does not show up in dmesg.
I'm willing to help further, I can use gdb and have a machine that I can
attach via null modem cable, if need be. However, I'm not acquainted with
FreeBSD's kernel debugger (ddb), so any instructions as to the ddb use
should be verbose. Thanks in advance.
>How-To-Repeat:
on my system, pressing any key in the loader,
then entering:
set hw.ata.tags=1
boot
will cause the problem. Adding a line "hw.ata.tags=1" to /boot/loader.conf
also triggers the problem.
>Fix:
Workaround: comment out hw.ata.tags line in /boot/loader.conf. Comes at the
expense of tagged queueing, obviously.
Fix: will probably require changes to the ata driver that I cannot do.
>Release-Note:
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200204141346.g3EDk2G00380>
