[lkml]   [2004]   [Jun]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: PATCH: Further aacraid work
Alan Cox wrote:
> On Thu, Jun 17, 2004 at 09:10:43PM +0200, Andi Kleen wrote:
>>The AMD64 IOMMU could do it too (and the code to do it exists in
>>2.6). But the problem is that the current IO layer doesn't provide a
>>sufficient fallback path when this fails. You have to promise in
>>advance that you can merge and then later it's too late to change your
>>mind without signalling an IO error.
> I would rather see it below the I/O layer for things like AMD64. The
> reason I say this is that many drivers would suffer from iommu merging not
> gain, and others may have limits.

This reminds me of good ole IDE: the first-generation SATA controllers
carry forward the limits of the older PCI IDE controllers: neither the
S/G table nor any single S/G entry may span a 64K boundary.

In theory the block layer / SCSI layer DMA boundary stuff takes care of
this -- but iommu merging _undoes_ the segment splitting that the
hardware _requires_. Thus, in ata_fill_sg in libata-core.c, I re-split
the S/G list after DMA-mapping it. A bit lame.

James and BenH discussed a solution at the DMA level, but I don't think
anything ever happened.


To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-03-22 14:03    [W:0.066 / U:4.336 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site