Loading arch/arm64/mm/dma-mapping.c +7 −2 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ #include <linux/iommu.h> #include <linux/vmalloc.h> #include <linux/swiotlb.h> #include <linux/dma-removed.h> #include <linux/pci.h> #include <linux/io.h> Loading Loading @@ -1081,8 +1082,12 @@ static void __iommu_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, const struct iommu_ops *iommu, bool coherent) { if (!dev->dma_ops) if (!dev->dma_ops) { if (dev->removed_mem) set_dma_ops(dev, &removed_dma_ops); else dev->dma_ops = &swiotlb_dma_ops; } dev->archdata.dma_coherent = coherent; __iommu_setup_dma_ops(dev, dma_base, size, iommu); Loading include/linux/dma-removed.h 0 → 100644 +23 −0 Original line number Diff line number Diff line /* * Copyright (c) 2019, The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #ifndef __LINUX_DMA_REMOVED_H #define __LINUX_DMA_REMOVED_H extern const struct dma_map_ops removed_dma_ops; #endif /* __LINUX_DMA_REMOVED_H */ Loading
arch/arm64/mm/dma-mapping.c +7 −2 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ #include <linux/iommu.h> #include <linux/vmalloc.h> #include <linux/swiotlb.h> #include <linux/dma-removed.h> #include <linux/pci.h> #include <linux/io.h> Loading Loading @@ -1081,8 +1082,12 @@ static void __iommu_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, const struct iommu_ops *iommu, bool coherent) { if (!dev->dma_ops) if (!dev->dma_ops) { if (dev->removed_mem) set_dma_ops(dev, &removed_dma_ops); else dev->dma_ops = &swiotlb_dma_ops; } dev->archdata.dma_coherent = coherent; __iommu_setup_dma_ops(dev, dma_base, size, iommu); Loading
include/linux/dma-removed.h 0 → 100644 +23 −0 Original line number Diff line number Diff line /* * Copyright (c) 2019, The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #ifndef __LINUX_DMA_REMOVED_H #define __LINUX_DMA_REMOVED_H extern const struct dma_map_ops removed_dma_ops; #endif /* __LINUX_DMA_REMOVED_H */