mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-22 09:11:26 +03:00
drivers: misc: Fix the argument of iommu_map() for Linux v6.3
There is additional argument added in iommu_map() from Linux v6.3. Pass the proper argument from the driver who are using this APIs. Using conftest methods for differentiating whether additional argument is needed or not. Bug 4374520 Change-Id: I3d6452cf6c71f495e3b6e3b240b2c2d839aa4b0d Signed-off-by: Brad Griffis <bgriffis@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3128547 Reviewed-by: Jon Hunter <jonathanh@nvidia.com> GVS: Gerrit_Virtual_Submit <buildbot_gerritrpt@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
6ca4e1e64c
commit
222eebeb31
@@ -3,6 +3,8 @@
|
||||
|
||||
#define pr_fmt(fmt) "nvscic2c-pcie: pci-client: " fmt
|
||||
|
||||
#include <nvidia/conftest.h>
|
||||
|
||||
#include <linux/dma-buf.h>
|
||||
#include <linux/dma-map-ops.h>
|
||||
#include <linux/errno.h>
|
||||
@@ -246,7 +248,12 @@ allocate_edma_rx_desc_iova(struct pci_client_t *ctx)
|
||||
goto err;
|
||||
}
|
||||
prot = (IOMMU_CACHE | IOMMU_READ | IOMMU_WRITE);
|
||||
ret = iommu_map(ctx->domain, ctx->edma_ch_desc_iova, phys_addr, EDMA_CH_DESC_SZ, prot);
|
||||
ret = iommu_map(ctx->domain, ctx->edma_ch_desc_iova, phys_addr,
|
||||
#if defined(NV_IOMMU_MAP_HAS_GFP_ARG)
|
||||
EDMA_CH_DESC_SZ, prot, GFP_KERNEL);
|
||||
#else
|
||||
EDMA_CH_DESC_SZ, prot);
|
||||
#endif
|
||||
if (ret) {
|
||||
pr_err("pci client failed to map iova to 60K physical backing\n");
|
||||
goto err;
|
||||
@@ -408,7 +415,12 @@ pci_client_map_addr(void *pci_client_h, u64 to_iova, phys_addr_t paddr,
|
||||
if (WARN_ON(!ctx || !to_iova || !paddr || !size))
|
||||
return -EINVAL;
|
||||
|
||||
return iommu_map(ctx->domain, to_iova, paddr, size, prot);
|
||||
return iommu_map(ctx->domain, to_iova, paddr, size,
|
||||
#if defined(NV_IOMMU_MAP_HAS_GFP_ARG)
|
||||
prot, GFP_KERNEL);
|
||||
#else
|
||||
prot);
|
||||
#endif
|
||||
}
|
||||
|
||||
size_t
|
||||
|
||||
@@ -321,7 +321,11 @@ static void tvnet_ep_alloc_empty_buffers(struct pci_epf_tvnet *tvnet)
|
||||
}
|
||||
|
||||
ret = iommu_map(domain, iova, page_to_phys(page), PAGE_SIZE,
|
||||
#if defined(NV_IOMMU_MAP_HAS_GFP_ARG)
|
||||
IOMMU_CACHE | IOMMU_READ | IOMMU_WRITE, GFP_KERNEL);
|
||||
#else
|
||||
IOMMU_CACHE | IOMMU_READ | IOMMU_WRITE);
|
||||
#endif
|
||||
if (ret < 0) {
|
||||
dev_err(tvnet->fdev, "%s: iommu_map(RAM) failed: %d\n",
|
||||
__func__, ret);
|
||||
@@ -1237,7 +1241,11 @@ static int tvnet_ep_pci_epf_setup_irqsp(struct pci_epf_tvnet *tvnet)
|
||||
syncpt_addr = nvhost_interrupt_syncpt_get_syncpt_addr(ctrl_irqsp->is);
|
||||
#endif
|
||||
ret = iommu_map(domain, amap->iova, syncpt_addr, PAGE_SIZE,
|
||||
#if defined(NV_IOMMU_MAP_HAS_GFP_ARG)
|
||||
IOMMU_CACHE | IOMMU_READ | IOMMU_WRITE, GFP_KERNEL);
|
||||
#else
|
||||
IOMMU_CACHE | IOMMU_READ | IOMMU_WRITE);
|
||||
#endif
|
||||
if (ret < 0) {
|
||||
dev_err(fdev, "%s: iommu_map of ctrlsp mem failed: %d\n",
|
||||
__func__, ret);
|
||||
@@ -1256,7 +1264,11 @@ static int tvnet_ep_pci_epf_setup_irqsp(struct pci_epf_tvnet *tvnet)
|
||||
syncpt_addr = nvhost_interrupt_syncpt_get_syncpt_addr(data_irqsp->is);
|
||||
#endif
|
||||
ret = iommu_map(domain, amap->iova + PAGE_SIZE, syncpt_addr, PAGE_SIZE,
|
||||
#if defined(NV_IOMMU_MAP_HAS_GFP_ARG)
|
||||
IOMMU_CACHE | IOMMU_READ | IOMMU_WRITE, GFP_KERNEL);
|
||||
#else
|
||||
IOMMU_CACHE | IOMMU_READ | IOMMU_WRITE);
|
||||
#endif
|
||||
if (ret < 0) {
|
||||
dev_err(fdev, "%s: iommu_map of datasp mem failed: %d\n",
|
||||
__func__, ret);
|
||||
@@ -1323,7 +1335,11 @@ static int tvnet_ep_alloc_single_page_bar0_mem(struct pci_epf *epf,
|
||||
}
|
||||
|
||||
ret = iommu_map(domain, amap->iova, page_to_phys(amap->page), PAGE_SIZE,
|
||||
#if defined(NV_IOMMU_MAP_HAS_GFP_ARG)
|
||||
IOMMU_CACHE | IOMMU_READ | IOMMU_WRITE, GFP_KERNEL);
|
||||
#else
|
||||
IOMMU_CACHE | IOMMU_READ | IOMMU_WRITE);
|
||||
#endif
|
||||
if (ret < 0) {
|
||||
dev_err(tvnet->fdev, "%s: type: %d iommu_map(RAM) failed: %d\n",
|
||||
__func__, type, ret);
|
||||
@@ -1404,7 +1420,11 @@ static int tvnet_ep_alloc_multi_page_bar0_mem(struct pci_epf *epf,
|
||||
}
|
||||
|
||||
ret = iommu_map(domain, amap->iova, page_to_phys(amap->page),
|
||||
#if defined(NV_IOMMU_MAP_HAS_GFP_ARG)
|
||||
amap->size, IOMMU_CACHE | IOMMU_READ | IOMMU_WRITE, GFP_KERNEL);
|
||||
#else
|
||||
amap->size, IOMMU_CACHE | IOMMU_READ | IOMMU_WRITE);
|
||||
#endif
|
||||
if (ret < 0) {
|
||||
dev_err(tvnet->fdev, "%s: iommu_map(RAM) failed: %d\n",
|
||||
__func__, ret);
|
||||
|
||||
Reference in New Issue
Block a user