Date: Wed, 12 Nov 2008 18:23:14 +0100 From: Marc =?iso-8859-1?q?L=F6rner?= <marc.loerner@hob.de> To: freebsd-hackers@freebsd.org Subject: ide with DMA and ram > 4GB Message-ID: <200811121823.14400.marc.loerner@hob.de>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200811121823.14400.marc.loerner>