Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 4 Jan 1998 17:01:09 +0100 (MET)
From:      Luigi Rizzo <luigi@labinfo.iet.unipi.it>
To:        hackers@FreeBSD.ORG
Subject:   wd/wcd/atapi problems
Message-ID:  <199801041601.RAA18075@labinfo.iet.unipi.it>

next in thread | raw e-mail | index | archive | help
Since I have been looking at this code recently...

there is a number of problems in the wd/wcd/atapi drivers, and I am
wondering if someone is looking at them. A brief list follows:

(wd) kernel looping at high priority

   this just happened to me: I had a partition mounted on wd2, and
   the disk went idle. Then I did "umount /mnt", and while the disk
   was spinning up (and I got a wd2: interrupt timeout) the system had
   become completely unresponsive (mouse disappears, etc.)

   I only suspect that the reason is some code spinning at high
   priority, but haven't investigated further. Fortunately the wd
   driver has a watchdog...

(wcd) no watchdog function

   as the title says, there is probably no watchdog on wcd (ATAPI)
   units. This is problematic since problems on a unit will block the
   whole controller (including the primary disk on most of my machines),
   and ATAPI implementations tend to be not all the same (plus, our
   driver is certainly not perfect: e.g. with a stock 2.2.1 atapi a dd
   from a data CD often hangs, depending on how badly i screwed
   up the drive with the previous kernel; I have to cycle power to bring
   the device back to regular operation.

   I am not even sure if the watchdog in the wd driver is implemented
   properly. A comment in the code says it should be per controller,
   not per drive, and there might be some strange interaction when
   a drive(r) is not informed of a reset issued to its controller because
   of a timeout on the other drive.

(atapi) potentially long (3ms) delays in atapi_wait_cmd

   this routine, called from wdintr, in some cases might take
   such a long time waiting to send the packet command. Maybe
   modern drives are fast, but I was wondering, is there a way
   to temporarily release the cpu within a interrupt driver ?

	Cheers
	Luigi
-----------------------------+--------------------------------------
Luigi Rizzo                  |  Dip. di Ingegneria dell'Informazione
email: luigi@iet.unipi.it    |  Universita' di Pisa
tel: +39-50-568533           |  via Diotisalvi 2, 56126 PISA (Italy)
fax: +39-50-568522           |  http://www.iet.unipi.it/~luigi/
_____________________________|______________________________________



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199801041601.RAA18075>