On 1 June 2018 at 01:25, Robin Murphy <[email protected]> wrote: > On 31/05/18 06:55, Baolin Wang wrote: >> >> It is incorrect to use mem->size to valid if there are enough coherent >> memory to allocate in __dma_alloc_from_coherent(), since some devices >> may mark some occupied coherent memory by >> dma_mark_declared_memory_occupied(). >> >> So we can introduce one 'avail' parameter to save the available device >> coherent memory, to valid if we have enough coherent memory for the device >> to allocate. > > > We already have dma_mem->size stored for other reasons, so there's little > harm in using it for a rough sanity check to short-circuit the odd > allocation which cannot possibly succeed, but adding machinery purely for > the sake an ever-so-slightly more accurate, but still far from exhaustive, > check doesn't really seem worth it. > > Even if size <= dma_mem->avail there's still no guarantee that the > allocation will actually succeed, so what benefit does the explicit > accounting provide? >
Yes, it can not guarantee one successful allocation, but it can avoid some redundant bitmap operation and reducing the preempt-disable time if we have not enough memory by checking the actual available coherent memory. By the way, I think we should also add check in dma_mark_declared_memory_occupied() and __dma_mmap_from_coherent(). -- Baolin.wang Best Regards _______________________________________________ iommu mailing list [email protected] https://lists.linuxfoundation.org/mailman/listinfo/iommu
