Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 4 Jan 2000 08:22:24 +0100 (CET)
From:      Soren Schmidt <sos@freebsd.dk>
To:        green@FreeBSD.org (Brian Fundakowski Feldman)
Cc:        current@FreeBSD.org
Subject:   Re: ATA atapi-all.c problems/fixes/cleanups
Message-ID:  <200001040722.IAA72101@freebsd.dk>
In-Reply-To: <Pine.BSF.4.10.10001040130240.530-100000@green.dyndns.org> from Brian Fundakowski Feldman at "Jan 4, 2000 01:41:09 am"

next in thread | previous in thread | raw e-mail | index | archive | help
It seems Brian Fundakowski Feldman wrote:
> I just noticed a problem with the ATA driver with my (not quite, but to me)
> new CD-R drive.  The behavior is that underruns and overruns are handled
> incorrectly, due to a mixup between variables.  The end result is that
> too much data is sent to the drive and it chokes, borking my entire 2nd ATA
> bus and thereforeo my box.
>    Enclosed is my fix in the form of a patch to atapi-all.c.  The changes
> are:
> 	* general cleanups
> 	* the bugfixes
> 	* make the {over,under}run messages easier to understand/more helpful
> 	* more use of ATA_16BIT_ONLY and *l functions to maintain consistency
> I'm pretty certain that the bugfixes are correct, since it fixed the problem
> for me, but I don't know about the ATA_16BIT_ONLY usage.  My uncertainty
> there lies in wondering if packets have to be a certain modulus.  From the
> code, I'd assume that all packets would have a modulus of 4 bytes.  Is this
> correct?

Either the patch is very short, or you forgot to include it :)

The ATA_16BIT_ONLY thing is to only do 16bit wide inb/outb instructions
as old ISA HW don't allow 32bit wide access. This option is now deprecated
as it is switched on automagically for ISA cards.

>    Anyone else experiencing lockups when an underrun/overrun occurs, try
> this patch; it has fixed the problem for me, and now I'm on my way to
> writing music CDs :)  The current way to hack around that bug must be
> to use the "obs" operand to dd(1), since that's what came naturally to
> me :)

You _should_ _always_ have dd (or whatever you use) pad the output to the 
given blocksize, or you will run into problems. 

-Søren


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




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