mirror of
https://github.com/torvalds/linux.git
synced 2024-12-26 04:42:12 +00:00
6e4bf58677
The generic swiotlb DMA ops were based on the x86 ones and provide equivalent functionality, so use them. Also fix the sta2x11 case. For that SOC the DMA map ops need an additional physical to DMA address translations. For swiotlb buffers that is done throught the phys_to_dma helper, but the sta2x11_dma_ops also added an additional translation on the return value from x86_swiotlb_alloc_coherent, which is only correct if that functions returns a direct allocation and not a swiotlb buffer. With the generic swiotlb and DMA-direct code phys_to_dma is not always used and the separate sta2x11_dma_ops can be replaced with a simple bit that marks if the additional physical to DMA address translation is needed. 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-5-hch@lst.de Signed-off-by: Ingo Molnar <mingo@kernel.org>
28 lines
615 B
C
28 lines
615 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _ASM_X86_DEVICE_H
|
|
#define _ASM_X86_DEVICE_H
|
|
|
|
struct dev_archdata {
|
|
#if defined(CONFIG_INTEL_IOMMU) || defined(CONFIG_AMD_IOMMU)
|
|
void *iommu; /* hook for IOMMU specific extension */
|
|
#endif
|
|
#ifdef CONFIG_STA2X11
|
|
bool is_sta2x11;
|
|
#endif
|
|
};
|
|
|
|
#if defined(CONFIG_X86_DEV_DMA_OPS) && defined(CONFIG_PCI_DOMAINS)
|
|
struct dma_domain {
|
|
struct list_head node;
|
|
const struct dma_map_ops *dma_ops;
|
|
int domain_nr;
|
|
};
|
|
void add_dma_domain(struct dma_domain *domain);
|
|
void del_dma_domain(struct dma_domain *domain);
|
|
#endif
|
|
|
|
struct pdev_archdata {
|
|
};
|
|
|
|
#endif /* _ASM_X86_DEVICE_H */
|