Subject: Re: CF/IDE performance problem...
To: None <>
From: M. Warner Losh <>
List: tech-kern
Date: 11/26/2005 17:49:44
In message: <>
            Matthew Orgass <> writes:
: On 2005-11-22 wrote:
: > As someone who deals with CF on a daily basis in many different
: > products, I can tell you that there are many CF cards that do report
: > DMA capability when DMARQ isn't connected on old CF<->IDE adapters.
: > This leads to lots of failures when DMA is enabled by the host (either
: > BIOS or OS).  These cards are non-conformant, since the IDE adapters
: > do not have DMARQ connected (newer ones do, however).  Relying on this
: > part of the spec being implemented correctly is asking for trouble.
:   The fallback code worked, the only problem there was me not knowing that
: this was an issue :/.  The adaptor I used is a currently shipping model
: and while looking for one that supports DMA I found several more that did
: not.  This is unfortunate, since there are now inexpensive 1GB CF cards
: that (claim to) support UDMA mode 4, which should make a useful drive that
: is more tolerant of frequent power cycles than rotating drives.

I have seen 64MB cards that support WDMA.  I've not seen any of the
bigger ones that claim to support UDMA mode when used in true IDE
mode.  Which brands are you seeing that support this?  I thought I saw
somewhere in the spec that the maximum was just WDMA, but it has been
a while since I looked.

:   I filed kern/32169 with a patch to detect PIO modes 1 and 2, which I
: suspect would solve the performance problem with the Hitachi controller
: with most IDE controllers (unfortunately, my viaide controller doesn't
: support these modes, but I think it isn't worth another flag to work
: around combinations of broken hardware).

You can turn the ones that don't support DMA into ones that do with a
slight rewiring of the controller.  The cards that my company produced
for our internal use just needed to have the following modifications
made to them to make DMA start working.  I had to connect pin 43 of
the CF connector to pin 21 of the IDE connector.  Ditto with 44 and
29.  IIRC, I also needed to cut the grounding on the IDE end of either
21 or 29.  Your milage may vary, so be careful before doing this.

This also, btw, is a way to tell if your CF IDE adapter is good.  Just
put an ohm meter between these connections...