Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Jan 2003 21:03:04 -0500
From:      "Braden McGrath" <bwm3@po.cwru.edu>
To:        <freebsd-questions@freebsd.org>
Subject:   ATA DMA issues in 5.0-RELEASE
Message-ID:  <015801c2c671$650ed470$6da11681@z>

next in thread | raw e-mail | index | archive | help
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. =20

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. =20

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:
http://home.cwru.edu/~bwm3/ata-dma-updates.diff (~8KB)

--Braden McGrath
bwm3@po.cwru.NO.edu.SPAM
(remove capital letters to get my mail address)


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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?015801c2c671$650ed470$6da11681>