This is less of a question and more of a solution to a problem I was having.

There were (apparently) some ATA DMA changes recently in -current that never
trickled down to 4.7-STABLE, which is what I had been running before trying
5.0.  (My 4-STABLE install was working perfectly.)  These DMA changes were
specific to certain cards & chipsets, from what I can gather looking at the
source.  My problems were specifically with a Promise PCI Ultra66 controller
(no raid, just extra ATA ports).  Every time drives were accessed on the
controller in 5.0, the controller would hang and be forced to reset.

I looked through the -current source revisions and found that the issues
were resolved in newer versions of the ata driver.  I cvsupped to 5-current
and attempted to build a kernel, and it failed (this didn't surprise me).  I
backed down to 5-release, giving up on current.  

My next step was to get the source diffs between current's ATA support and
5-release.  I compiled them into a single file, patched the source, built a
"modified" -release kernel, and now my DMA problem is no more.  

I figured since I had already done the work of determining the needed files
and compiling the unidiff, I would make it available to the community.  Note
that I have made NO alterations to the source itself.  My diffs do have
modified "build IDs" so they will patch cleanly against the -release sources
though.  (I had to drop '/home/ncvs/' from the identifiers.)  I've just gone
through, grabbed the files needed to correct this problem, and put them
together for the sake of convenience.

Please remember that this is code from CURRENT, possibly buggy and
untested...  But it is working 100% fine for me.  Just drop the diff in
/usr/src and run 'patch -p1 <ata-dma-updates.diff'  Then simply
rebuild/install your kernel as normal and you should have working DMA on a
previously broken card.

I don't want to attach it and spam everyone's mailboxes, but you can snag
the unidiff at: (~8KB)

--Braden McGrath
(remove capital letters to get my mail address)

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-questions" in the body of the message

Reply via email to