On Wed, 2007-05-23 at 20:38 +0100, Alan Cox wrote: > On Wed, 23 May 2007 15:17:08 -0400 > "Salyzyn, Mark" <mark_salyzyn@xxxxxxxxxxx> wrote: > > > The 31 bit limit for some of these cards is a problem, we currently only > > do __GFP_DMA for bounce buffer sg elements allocated for user supplied > > references in ioctls. > > > > I figure we should be using pci_alloc_consistent calls for these > > allocations to more accurately acquire memory within the 31 bit limit if > > necessary, we could switch to these to remove the need for the __GFP_DMA > > flag in the aacraid driver? > > That didn't used to work right on the AMD boards when I tried it last as > we ended up with a buffer that was mapped by the IOMMU for some reason > and that was not below 2GB. Is that a bug in the x86_64 subsystem ... or just a bug in the HW? I'm assuming what happened is that the GART aperture was placed above the 2GB limit making the GART unable to act as an IOMMU for any devices with a dma_mask < 32bit? This does show up a problem in our dma_ functions: namely that if the system says it has an IOMMU then we assume it's fully functional (i.e. able to reach all addresses). There was a move afoot a while ago to replace the single PCI_DMA_BUS_IS_PHYS macro which is used to tell the system globally if we have an IOMMU with something like dma_dev_uses_iommu(struct device *) which would do the same thing but on a per-device basis. Does this need to be resurrected? James - To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html