summaryrefslogtreecommitdiffstats
path: root/lib/dma-direct.c
Commit message (Collapse)AuthorAgeFilesLines
* dma-mapping: Don't clear GFP_ZERO in dma_alloc_attrsChristoph Hellwig2018-03-281-0/+3
| | | | | | | | | | | | | | | | | | Revert the clearing of __GFP_ZERO in dma_alloc_attrs and move it to dma_direct_alloc for now. While most common architectures always zero dma cohereny allocations (and x86 did so since day one) this is not documented and at least arc and s390 do not zero without the explicit __GFP_ZERO argument. Fixes: 57bf5a8963f8 ("dma-mapping: clear harmful GFP_* flags in common code") Reported-by: Evgeniy Didin <Evgeniy.Didin@synopsys.com> Reported-by: Sebastian Ott <sebott@linux.vnet.ibm.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Tested-by: Evgeniy Didin <Evgeniy.Didin@synopsys.com> Cc: iommu@lists.linux-foundation.org Link: https://lkml.kernel.org/r/20180328133535.17302-2-hch@lst.de
* dma/direct: Handle force decryption for DMA coherent buffers in common codeChristoph Hellwig2018-03-201-6/+26
| | | | | | | | | | | | | | | | | | | | | | | | | With that in place the generic DMA-direct routines can be used to allocate non-encrypted bounce buffers, and the x86 SEV case can use the generic swiotlb ops including nice features such as using CMA allocations. Note that I'm not too happy about using sev_active() in DMA-direct, but I couldn't come up with a good enough name for a wrapper to make it worth adding. Tested-by: Tom Lendacky <thomas.lendacky@amd.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Thomas Gleixner <tglx@linutronix.de> Cc: David Woodhouse <dwmw2@infradead.org> Cc: Joerg Roedel <joro@8bytes.org> Cc: Jon Mason <jdmason@kudzu.us> Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Muli Ben-Yehuda <mulix@mulix.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: iommu@lists.linux-foundation.org Link: http://lkml.kernel.org/r/20180319103826.12853-14-hch@lst.de Signed-off-by: Ingo Molnar <mingo@kernel.org>
* dma-direct: comment the dma_direct_free calling conventionChristoph Hellwig2018-02-121-0/+4
| | | | Signed-off-by: Christoph Hellwig <hch@lst.de>
* dma-direct: mark as is_physChristoph Hellwig2018-02-121-0/+1
| | | | | | | Various PCI_DMA_BUS_IS_PHYS implementations rely on this flag to make proper decisions for block and networking addressability. Signed-off-by: Christoph Hellwig <hch@lst.de>
* dma-direct: reject too small dma masksChristoph Hellwig2018-01-151-0/+19
| | | | | Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Robin Murphy <robin.murphy@arm.com>
* dma-direct: make dma_direct_{alloc,free} available to other implementationsChristoph Hellwig2018-01-151-3/+3
| | | | | | | So that they don't need to indirect through the operation vector. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Vladimir Murzin <vladimir.murzin@arm.com>
* dma-direct: retry allocations using GFP_DMA for small masksChristoph Hellwig2018-01-151-1/+24
| | | | | | | | | | | If an attempt to allocate memory succeeded, but isn't inside the supported DMA mask, retry the allocation with GFP_DMA set as a last resort. Based on the x86 code, but an off by one error in what is now dma_coherent_ok has been fixed vs the x86 code. Signed-off-by: Christoph Hellwig <hch@lst.de>
* dma-direct: add support for allocation from ZONE_DMA and ZONE_DMA32Christoph Hellwig2018-01-151-0/+14
| | | | | | | | | | | | This allows to dip into zones for lower memory if they are available. If one of the zones is not available the corresponding GFP_* flag will evaluate to 0 so they won't change anything. We provide an arch tunable for those architectures that do not use GFP_DMA for the lowest 24-bits, given that there are a few. Roughly based on the x86 code. Signed-off-by: Christoph Hellwig <hch@lst.de>
* dma-direct: use node local allocations for coherent memoryChristoph Hellwig2018-01-151-1/+1
| | | | | | | To preserve the x86 behavior. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Robin Murphy <robin.murphy@arm.com>
* dma-direct: add support for CMA allocationChristoph Hellwig2018-01-151-6/+18
| | | | | | | | Try the CMA allocator for coherent allocations if supported. Roughly modelled after the x86 code. Signed-off-by: Christoph Hellwig <hch@lst.de>
* dma-direct: add dma address sanity checksChristoph Hellwig2018-01-151-1/+30
| | | | | | Roughly based on the x86 pci-nommu implementation. Signed-off-by: Christoph Hellwig <hch@lst.de>
* dma-direct: use phys_to_dmaChristoph Hellwig2018-01-151-11/+7
| | | | | | | | This means it uses whatever linear remapping scheme that the architecture provides is used in the generic dma_direct ops. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Vladimir Murzin <vladimir.murzin@arm.com>
* dma-direct: rename dma_noop to dma_directChristoph Hellwig2018-01-151-0/+63
The trivial direct mapping implementation already does a virtual to physical translation which isn't strictly a noop, and will soon learn to do non-direct but linear physical to dma translations through the device offset and a few small tricks. Rename it to a better fitting name. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Vladimir Murzin <vladimir.murzin@arm.com>