To enable simpler calling code, change this function to find the value of bypass instead of taking it as an argument.
Signed-off-by: Reza Arbab <ar...@linux.ibm.com> --- arch/powerpc/platforms/powernv/npu-dma.c | 12 +++++++++--- arch/powerpc/platforms/powernv/pci.h | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/arch/powerpc/platforms/powernv/npu-dma.c b/arch/powerpc/platforms/powernv/npu-dma.c index 5a8313654033..a6b8c7ad36e4 100644 --- a/arch/powerpc/platforms/powernv/npu-dma.c +++ b/arch/powerpc/platforms/powernv/npu-dma.c @@ -258,13 +258,21 @@ static int pnv_npu_dma_set_bypass(struct pnv_ioda_pe *npe) return rc; } -void pnv_npu_try_dma_set_bypass(struct pci_dev *gpdev, bool bypass) +void pnv_npu_try_dma_set_bypass(struct pci_dev *gpdev, u64 mask) { + struct pnv_ioda_pe *gpe = pnv_ioda_get_pe(gpdev); int i; struct pnv_phb *phb; struct pci_dn *pdn; struct pnv_ioda_pe *npe; struct pci_dev *npdev; + bool bypass; + + if (!gpe) + return; + + /* We only do bypass if it's enabled on the linked device */ + bypass = pnv_ioda_pe_iommu_bypass_supported(gpe, mask); for (i = 0; ; ++i) { npdev = pnv_pci_get_npu_dev(gpdev, i); @@ -277,8 +285,6 @@ void pnv_npu_try_dma_set_bypass(struct pci_dev *gpdev, bool bypass) return; phb = pci_bus_to_host(npdev->bus)->private_data; - - /* We only do bypass if it's enabled on the linked device */ npe = &phb->ioda.pe_array[pdn->pe_number]; if (bypass) { diff --git a/arch/powerpc/platforms/powernv/pci.h b/arch/powerpc/platforms/powernv/pci.h index 41f7dec3aee5..21db0f4cfb11 100644 --- a/arch/powerpc/platforms/powernv/pci.h +++ b/arch/powerpc/platforms/powernv/pci.h @@ -211,7 +211,7 @@ extern void pe_level_printk(const struct pnv_ioda_pe *pe, const char *level, pe_level_printk(pe, KERN_INFO, fmt, ##__VA_ARGS__) /* Nvlink functions */ -extern void pnv_npu_try_dma_set_bypass(struct pci_dev *gpdev, bool bypass); +extern void pnv_npu_try_dma_set_bypass(struct pci_dev *gpdev, u64 mask); extern void pnv_pci_ioda2_tce_invalidate_entire(struct pnv_phb *phb, bool rm); extern struct pnv_ioda_pe *pnv_pci_npu_setup_iommu(struct pnv_ioda_pe *npe); extern struct iommu_table_group *pnv_try_setup_npu_table_group( -- 1.8.3.1