Subject: Re: CVS commit: src/sys/dev/ic
To: Manuel Bouyer <bouyer@antioche.eu.org>
From: Charles M. Hannum <abuse@spamalicious.com>
List: source-changes
Date: 10/08/2003 18:41:37
On Wednesday 08 October 2003 05:57 pm, Manuel Bouyer wrote:
> On Tue, Oct 07, 2003 at 07:02:00PM +0000, Charles M. Hannum wrote:
> > It's really NOT acceptable to poll here -- this creates conditions where
> > the system can wedge for a long period (e.g. inserting a CF card).  It is
> > also
>
> Not with the kernel thread changes I commited today.
>
> > not necessary in order to implement this algorithm.  You can poll the
> > "alternate status" register without clearing the interrupt, and let the
>
> No. The alternate status register isn't available from all controllers,
> so we can't use it.

Yes, we can.  There are really two cases:

1) Any IDE, EIDE or ATA controller+drive supports the alternate status 
register.  This is the case where we expect to read a "0" if there is no 
slave.  No problem.

2) A controller+drive older than that will read all-1s.  Therefore it will 
fail the 0 test and continue polling.  This is completely harmless.  Because 
the drive also is too old to support the slave register shadowing, this test 
would not work for it anyway even if it read the main status register.

It's been 17 years since IDE was introduced.  There is no excuse for polling 
any more.