On Fri, 2015-02-20 at 16:06 +1100, Benjamin Herrenschmidt wrote: > Note that even on powerpc platforms where it would work because we > maintain both 32-bit and 64-bit bypass windows in the device address > space simultaneously, you will leak iommu entries unless you also switch > back to 32-bit when freeing the 32-bit mappings... (and you would > probably crash if you tried to free a 64-bit mapping while in 32-bit > mode). > > The iommu APIs weren't designed with that "switching mask" facility in > mind... Looking a bit more closely, you basically do - set_dma_mask(64-bit) - set_consistent_dma_mask(32-bit) Now, I don't know how x86 will react to the conflicting masks, but on ppc64, I'm pretty sure the second one will barf. IE, the first one will establish a set of direct mapping ops which give you a bypass of the iommu to all of memory. The second one will then do a dma_supported(mask) call which will hit the direct ops, and they will fail since a 32-bit mask cannot address the bypass completely. Are architectures really required to support such mismatching dma_mask and consistent_dma_mask ? what a bloody trainwreck ... :-( Cheers, Ben. -- 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