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 [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to