ide with DMA and ram > 4GB
Marc Lörner
marc.loerner at hob.de
Wed Nov 12 09:43:43 PST 2008
Hello,
I just stepped over a problem with my IDE disk running in DMA-mode
and having more than 4GB of RAM.
It seems that the whole way down GEOM, ata-disk, ata-dma never is checked
whether physical address of buffer is less than 4GB an so fits in 32bits.
=> when PRD is set the address is rigorously truncated to fit into 32bit,
with buffer < 4GB all is quite fine.
So what do you recommend:
- Easiest way (but not performantest) is to turn DMA for ide off and use PIO
instead
- Harder way: Bugfix ide-dma!
When doing this, where do you recommend to put code?
I tried to do a simple (but not performant) patch in in ata-disk functions
ad_strategy and ad_done with using another aligned, with right boundary and
physical address < 4GB and copying data from an to it from bp->b_data
(or request->data). At least this one works, but copying from one to another
buffer is not quite elegant and the code doesn't really belong there.
So I thought of putting something into busdma_machdep, but right now I have
now clue to where to hook in, because this function cannot modify buffer
given from vfs_bio => geom => ata.
Regards,
Marc Loerner
P.S.:
I'm using kernel-sources from 7.0-RELEASE-p3
More information about the freebsd-hackers
mailing list