Date: 18 Sep 2003 08:03:28 -0000 From: Antti Louko <alo@iki.fi> To: FreeBSD-gnats-submit@FreeBSD.org Cc: alo@iki.fi Subject: kern/56975: Write to a Compact Flash (CF) card freezes the whole system Message-ID: <20030918080328.39957.qmail@alo.louko.com> Resent-Message-ID: <200309180810.h8I8ADir077078@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 56975 >Category: kern >Synopsis: Write to a Compact Flash (CF) card freezes the whole system >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Thu Sep 18 01:10:13 PDT 2003 >Closed-Date: >Last-Modified: >Originator: Antti Louko >Release: FreeBSD 5.1-RELEASE i386 >Organization: >Environment: System: FreeBSD xxxx.louko.com 5.1-RELEASE FreeBSD 5.1-RELEASE #26: Tue Sep 16 08:18:42 EEST 2003 root@xxxx.louko.com:/usr/src/sys/i386/compile/LEX2 i386 VIA Eden processor and chipset combo VIA VT8601A, VT82C686B. >Description: The machine has a CF slot on the motherboard and the problem occurs when writing to the CF with either dd to raw disk or through file system. The system quite soon freezes completely. >How-To-Repeat: Insert CF. dd if=/dev/zero bs=32k of=/dev/ad2 >Fix: It appears that chipset/CF combo doesn't like any IO operations immediately after s status inquiry. The following path fixes the problem. It seemed best to put the delay just after the INB and thus get it in all exit paths of the function. *** dev/ata/ata-all.c.orig Sun May 18 19:43:08 2003 --- dev/ata/ata-all.c Tue Sep 16 08:14:56 2003 *************** *** 978,983 **** --- 978,984 ---- DELAY(1); while (timeout < 5000000) { /* timeout 5 secs */ atadev->channel->status = ATA_IDX_INB(atadev->channel, ATA_STATUS); + DELAY(1); /* if drive fails status, reselect the drive just to be sure */ if (atadev->channel->status == 0xff) { >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030918080328.39957.qmail>