mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
e380a0394c
The devices found behind this PCIe chip have unusual DMA mapping constraints as there is an AMBA interconnect placed in between them and the different PCI endpoints. The offset between physical memory addresses and AMBA's view is provided by reading a PCI config register, which is saved and used whenever DMA mapping is needed. It turns out that this DMA setup can be represented by properly setting 'dma_pfn_offset', 'dma_bus_mask' and 'dma_mask' during the PCI device enable fixup. And ultimately allows us to get rid of this device's custom DMA functions. Aside from the code deletion and DMA setup, sta2x11_pdev_to_mapping() is moved to avoid warnings whenever CONFIG_PM is not enabled. Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> Signed-off-by: Christoph Hellwig <hch@lst.de>
25 lines
568 B
C
25 lines
568 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
|
|
};
|
|
|
|
#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 */
|