aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVinod Koul <vinod.koul@intel.com>2016-12-13 22:36:23 -0500
committerVinod Koul <vinod.koul@intel.com>2016-12-13 22:36:23 -0500
commit3f809e844c6ba46fe5e16b20ad70ac4027341b36 (patch)
tree2bd7f7ceb11d3ecd03c43aa3bc2bd4db8bb99478
parent7fc3b3f946341a035f05e13756f7b2c441492c55 (diff)
parent7393fca924e22ad3c071d8bbcc5acda21d0c2710 (diff)
Merge branch 'topic/ioat' into for-linus
-rw-r--r--drivers/dma/ioat/dma.c11
-rw-r--r--drivers/dma/ioat/init.c18
2 files changed, 18 insertions, 11 deletions
diff --git a/drivers/dma/ioat/dma.c b/drivers/dma/ioat/dma.c
index c867db765936..a371b07a0981 100644
--- a/drivers/dma/ioat/dma.c
+++ b/drivers/dma/ioat/dma.c
@@ -39,6 +39,7 @@
39#include "../dmaengine.h" 39#include "../dmaengine.h"
40 40
41static char *chanerr_str[] = { 41static char *chanerr_str[] = {
42 "DMA Transfer Source Address Error",
42 "DMA Transfer Destination Address Error", 43 "DMA Transfer Destination Address Error",
43 "Next Descriptor Address Error", 44 "Next Descriptor Address Error",
44 "Descriptor Error", 45 "Descriptor Error",
@@ -66,7 +67,6 @@ static char *chanerr_str[] = {
66 "Result Guard Tag verification Error", 67 "Result Guard Tag verification Error",
67 "Result Application Tag verification Error", 68 "Result Application Tag verification Error",
68 "Result Reference Tag verification Error", 69 "Result Reference Tag verification Error",
69 NULL
70}; 70};
71 71
72static void ioat_eh(struct ioatdma_chan *ioat_chan); 72static void ioat_eh(struct ioatdma_chan *ioat_chan);
@@ -75,13 +75,10 @@ static void ioat_print_chanerrs(struct ioatdma_chan *ioat_chan, u32 chanerr)
75{ 75{
76 int i; 76 int i;
77 77
78 for (i = 0; i < 32; i++) { 78 for (i = 0; i < ARRAY_SIZE(chanerr_str); i++) {
79 if ((chanerr >> i) & 1) { 79 if ((chanerr >> i) & 1) {
80 if (chanerr_str[i]) { 80 dev_err(to_dev(ioat_chan), "Err(%d): %s\n",
81 dev_err(to_dev(ioat_chan), "Err(%d): %s\n", 81 i, chanerr_str[i]);
82 i, chanerr_str[i]);
83 } else
84 break;
85 } 82 }
86 } 83 }
87} 84}
diff --git a/drivers/dma/ioat/init.c b/drivers/dma/ioat/init.c
index a7af149e7ba2..90eddd9f07e4 100644
--- a/drivers/dma/ioat/init.c
+++ b/drivers/dma/ioat/init.c
@@ -340,11 +340,13 @@ static int ioat_dma_self_test(struct ioatdma_device *ioat_dma)
340 dma_src = dma_map_single(dev, src, IOAT_TEST_SIZE, DMA_TO_DEVICE); 340 dma_src = dma_map_single(dev, src, IOAT_TEST_SIZE, DMA_TO_DEVICE);
341 if (dma_mapping_error(dev, dma_src)) { 341 if (dma_mapping_error(dev, dma_src)) {
342 dev_err(dev, "mapping src buffer failed\n"); 342 dev_err(dev, "mapping src buffer failed\n");
343 err = -ENOMEM;
343 goto free_resources; 344 goto free_resources;
344 } 345 }
345 dma_dest = dma_map_single(dev, dest, IOAT_TEST_SIZE, DMA_FROM_DEVICE); 346 dma_dest = dma_map_single(dev, dest, IOAT_TEST_SIZE, DMA_FROM_DEVICE);
346 if (dma_mapping_error(dev, dma_dest)) { 347 if (dma_mapping_error(dev, dma_dest)) {
347 dev_err(dev, "mapping dest buffer failed\n"); 348 dev_err(dev, "mapping dest buffer failed\n");
349 err = -ENOMEM;
348 goto unmap_src; 350 goto unmap_src;
349 } 351 }
350 flags = DMA_PREP_INTERRUPT; 352 flags = DMA_PREP_INTERRUPT;
@@ -827,16 +829,20 @@ static int ioat_xor_val_self_test(struct ioatdma_device *ioat_dma)
827 op = IOAT_OP_XOR; 829 op = IOAT_OP_XOR;
828 830
829 dest_dma = dma_map_page(dev, dest, 0, PAGE_SIZE, DMA_FROM_DEVICE); 831 dest_dma = dma_map_page(dev, dest, 0, PAGE_SIZE, DMA_FROM_DEVICE);
830 if (dma_mapping_error(dev, dest_dma)) 832 if (dma_mapping_error(dev, dest_dma)) {
833 err = -ENOMEM;
831 goto free_resources; 834 goto free_resources;
835 }
832 836
833 for (i = 0; i < IOAT_NUM_SRC_TEST; i++) 837 for (i = 0; i < IOAT_NUM_SRC_TEST; i++)
834 dma_srcs[i] = DMA_ERROR_CODE; 838 dma_srcs[i] = DMA_ERROR_CODE;
835 for (i = 0; i < IOAT_NUM_SRC_TEST; i++) { 839 for (i = 0; i < IOAT_NUM_SRC_TEST; i++) {
836 dma_srcs[i] = dma_map_page(dev, xor_srcs[i], 0, PAGE_SIZE, 840 dma_srcs[i] = dma_map_page(dev, xor_srcs[i], 0, PAGE_SIZE,
837 DMA_TO_DEVICE); 841 DMA_TO_DEVICE);
838 if (dma_mapping_error(dev, dma_srcs[i])) 842 if (dma_mapping_error(dev, dma_srcs[i])) {
843 err = -ENOMEM;
839 goto dma_unmap; 844 goto dma_unmap;
845 }
840 } 846 }
841 tx = dma->device_prep_dma_xor(dma_chan, dest_dma, dma_srcs, 847 tx = dma->device_prep_dma_xor(dma_chan, dest_dma, dma_srcs,
842 IOAT_NUM_SRC_TEST, PAGE_SIZE, 848 IOAT_NUM_SRC_TEST, PAGE_SIZE,
@@ -904,8 +910,10 @@ static int ioat_xor_val_self_test(struct ioatdma_device *ioat_dma)
904 for (i = 0; i < IOAT_NUM_SRC_TEST + 1; i++) { 910 for (i = 0; i < IOAT_NUM_SRC_TEST + 1; i++) {
905 dma_srcs[i] = dma_map_page(dev, xor_val_srcs[i], 0, PAGE_SIZE, 911 dma_srcs[i] = dma_map_page(dev, xor_val_srcs[i], 0, PAGE_SIZE,
906 DMA_TO_DEVICE); 912 DMA_TO_DEVICE);
907 if (dma_mapping_error(dev, dma_srcs[i])) 913 if (dma_mapping_error(dev, dma_srcs[i])) {
914 err = -ENOMEM;
908 goto dma_unmap; 915 goto dma_unmap;
916 }
909 } 917 }
910 tx = dma->device_prep_dma_xor_val(dma_chan, dma_srcs, 918 tx = dma->device_prep_dma_xor_val(dma_chan, dma_srcs,
911 IOAT_NUM_SRC_TEST + 1, PAGE_SIZE, 919 IOAT_NUM_SRC_TEST + 1, PAGE_SIZE,
@@ -957,8 +965,10 @@ static int ioat_xor_val_self_test(struct ioatdma_device *ioat_dma)
957 for (i = 0; i < IOAT_NUM_SRC_TEST + 1; i++) { 965 for (i = 0; i < IOAT_NUM_SRC_TEST + 1; i++) {
958 dma_srcs[i] = dma_map_page(dev, xor_val_srcs[i], 0, PAGE_SIZE, 966 dma_srcs[i] = dma_map_page(dev, xor_val_srcs[i], 0, PAGE_SIZE,
959 DMA_TO_DEVICE); 967 DMA_TO_DEVICE);
960 if (dma_mapping_error(dev, dma_srcs[i])) 968 if (dma_mapping_error(dev, dma_srcs[i])) {
969 err = -ENOMEM;
961 goto dma_unmap; 970 goto dma_unmap;
971 }
962 } 972 }
963 tx = dma->device_prep_dma_xor_val(dma_chan, dma_srcs, 973 tx = dma->device_prep_dma_xor_val(dma_chan, dma_srcs,
964 IOAT_NUM_SRC_TEST + 1, PAGE_SIZE, 974 IOAT_NUM_SRC_TEST + 1, PAGE_SIZE,