aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSerge Semin <fancer.lancer@gmail.com>2017-12-06 09:31:53 -0500
committerJon Mason <jdmason@kudzu.us>2018-01-28 22:17:23 -0500
commit417cf39cfea9c680aa7c278c8d8a0ca879cacf0a (patch)
treeb53d025c691ee2a7c5a12d0a48d19e2640c45f32 /drivers
parentb87ab21935d76922362ff98a5a78f16e2e956ead (diff)
NTB: Set dma mask and dma coherent mask to NTB devices
The dma_mask and dma_coherent_mask fields of the NTB struct device weren't initialized in hardware drivers. In fact it should be done instead of PCIe interface usage, since NTB clients are supposed to use NTB API and left unaware of real hardware implementation. In addition to that ntb_device_register() method shouldn't clear the passed ntb_dev structure, since it dma_mask is initialized by hardware drivers. Signed-off-by: Serge Semin <fancer.lancer@gmail.com> Signed-off-by: Jon Mason <jdmason@kudzu.us>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/ntb/hw/amd/ntb_hw_amd.c4
-rw-r--r--drivers/ntb/hw/idt/ntb_hw_idt.c8
-rw-r--r--drivers/ntb/hw/intel/ntb_hw_intel.c4
-rw-r--r--drivers/ntb/ntb.c1
4 files changed, 15 insertions, 2 deletions
diff --git a/drivers/ntb/hw/amd/ntb_hw_amd.c b/drivers/ntb/hw/amd/ntb_hw_amd.c
index f0788aae05c9..3cfa46876239 100644
--- a/drivers/ntb/hw/amd/ntb_hw_amd.c
+++ b/drivers/ntb/hw/amd/ntb_hw_amd.c
@@ -1020,6 +1020,10 @@ static int amd_ntb_init_pci(struct amd_ntb_dev *ndev,
1020 goto err_dma_mask; 1020 goto err_dma_mask;
1021 dev_warn(&pdev->dev, "Cannot DMA consistent highmem\n"); 1021 dev_warn(&pdev->dev, "Cannot DMA consistent highmem\n");
1022 } 1022 }
1023 rc = dma_coerce_mask_and_coherent(&ndev->ntb.dev,
1024 dma_get_mask(&pdev->dev));
1025 if (rc)
1026 goto err_dma_mask;
1023 1027
1024 ndev->self_mmio = pci_iomap(pdev, 0, 0); 1028 ndev->self_mmio = pci_iomap(pdev, 0, 0);
1025 if (!ndev->self_mmio) { 1029 if (!ndev->self_mmio) {
diff --git a/drivers/ntb/hw/idt/ntb_hw_idt.c b/drivers/ntb/hw/idt/ntb_hw_idt.c
index 24040317bb9c..93d4c9d2a9ad 100644
--- a/drivers/ntb/hw/idt/ntb_hw_idt.c
+++ b/drivers/ntb/hw/idt/ntb_hw_idt.c
@@ -2426,7 +2426,7 @@ static int idt_init_pci(struct idt_ntb_dev *ndev)
2426 struct pci_dev *pdev = ndev->ntb.pdev; 2426 struct pci_dev *pdev = ndev->ntb.pdev;
2427 int ret; 2427 int ret;
2428 2428
2429 /* Initialize the bit mask of DMA */ 2429 /* Initialize the bit mask of PCI/NTB DMA */
2430 ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(64)); 2430 ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(64));
2431 if (ret != 0) { 2431 if (ret != 0) {
2432 ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(32)); 2432 ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
@@ -2447,6 +2447,12 @@ static int idt_init_pci(struct idt_ntb_dev *ndev)
2447 dev_warn(&pdev->dev, 2447 dev_warn(&pdev->dev,
2448 "Cannot set consistent DMA highmem bit mask\n"); 2448 "Cannot set consistent DMA highmem bit mask\n");
2449 } 2449 }
2450 ret = dma_coerce_mask_and_coherent(&ndev->ntb.dev,
2451 dma_get_mask(&pdev->dev));
2452 if (ret != 0) {
2453 dev_err(&pdev->dev, "Failed to set NTB device DMA bit mask\n");
2454 return ret;
2455 }
2450 2456
2451 /* 2457 /*
2452 * Enable the device advanced error reporting. It's not critical to 2458 * Enable the device advanced error reporting. It's not critical to
diff --git a/drivers/ntb/hw/intel/ntb_hw_intel.c b/drivers/ntb/hw/intel/ntb_hw_intel.c
index 341a3d5baa3f..156b45cd4a19 100644
--- a/drivers/ntb/hw/intel/ntb_hw_intel.c
+++ b/drivers/ntb/hw/intel/ntb_hw_intel.c
@@ -2334,6 +2334,10 @@ static int intel_ntb_init_pci(struct intel_ntb_dev *ndev, struct pci_dev *pdev)
2334 goto err_dma_mask; 2334 goto err_dma_mask;
2335 dev_warn(&pdev->dev, "Cannot DMA consistent highmem\n"); 2335 dev_warn(&pdev->dev, "Cannot DMA consistent highmem\n");
2336 } 2336 }
2337 rc = dma_coerce_mask_and_coherent(&ndev->ntb.dev,
2338 dma_get_mask(&pdev->dev));
2339 if (rc)
2340 goto err_dma_mask;
2337 2341
2338 ndev->self_mmio = pci_iomap(pdev, 0, 0); 2342 ndev->self_mmio = pci_iomap(pdev, 0, 0);
2339 if (!ndev->self_mmio) { 2343 if (!ndev->self_mmio) {
diff --git a/drivers/ntb/ntb.c b/drivers/ntb/ntb.c
index bdcd59b13c1f..2581ab724c34 100644
--- a/drivers/ntb/ntb.c
+++ b/drivers/ntb/ntb.c
@@ -111,7 +111,6 @@ int ntb_register_device(struct ntb_dev *ntb)
111 111
112 init_completion(&ntb->released); 112 init_completion(&ntb->released);
113 113
114 memset(&ntb->dev, 0, sizeof(ntb->dev));
115 ntb->dev.bus = &ntb_bus; 114 ntb->dev.bus = &ntb_bus;
116 ntb->dev.parent = &ntb->pdev->dev; 115 ntb->dev.parent = &ntb->pdev->dev;
117 ntb->dev.release = ntb_dev_release; 116 ntb->dev.release = ntb_dev_release;