Currently this is lacking. The state of affairs for platforms
I know something about is:
x86: "4GB test"
alpha/sparc64/ppc64: any physical memory whatsoever may be accessed
via 32-bit PCI addressing due to IOMMU
ia64: "software IOMMU" scheme causes DMA to >4GB addresses to
require bounce buffers when using 32-bit addressing
Port posses broken 64-bit PCI addressing hack in an attempt
to deal with limitations of software IOMMU scheme.
To be honest, you really shouldn't care about this. If you are
writing a block device, the block/scsi/ide/whatever layer should take
care to only give you memory that can be DMA'd to/from.
Same goes for the networking layer.
In some cases, the distinction being made is "highmem vs not-highmem"
for something being DMA'able on PCI. This is on thing the networking
references. But, while this will always lead to correct behavior, it
is very inefficient.
Jens's and my work aims to directly address these kinds of issues.
Whatever we finally end up in Jens's code as the "DMA'able test" will
likely propagate into the networking bits.
David S. Miller
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to firstname.lastname@example.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/