lkml.org 
[lkml]   [2012]   [Nov]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 02/20] ioat: add missing DMA unmap to ioat_dma_self_test()
    Date
    Make ioat_dma_self_test() do DMA unmapping itself and fix handling
    of failure cases.

    Cc: Dan Williams <djbw@fb.com>
    Cc: Tomasz Figa <t.figa@samsung.com>
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
    ---
    drivers/dma/ioat/dma.c | 11 +++++++----
    1 file changed, 7 insertions(+), 4 deletions(-)

    diff --git a/drivers/dma/ioat/dma.c b/drivers/dma/ioat/dma.c
    index 73b2b65..464138a 100644
    --- a/drivers/dma/ioat/dma.c
    +++ b/drivers/dma/ioat/dma.c
    @@ -833,14 +833,14 @@ int __devinit ioat_dma_self_test(struct ioatdma_device *device)

    dma_src = dma_map_single(dev, src, IOAT_TEST_SIZE, DMA_TO_DEVICE);
    dma_dest = dma_map_single(dev, dest, IOAT_TEST_SIZE, DMA_FROM_DEVICE);
    - flags = DMA_COMPL_SRC_UNMAP_SINGLE | DMA_COMPL_DEST_UNMAP_SINGLE |
    + flags = DMA_COMPL_SKIP_SRC_UNMAP | DMA_COMPL_SKIP_DEST_UNMAP |
    DMA_PREP_INTERRUPT;
    tx = device->common.device_prep_dma_memcpy(dma_chan, dma_dest, dma_src,
    IOAT_TEST_SIZE, flags);
    if (!tx) {
    dev_err(dev, "Self-test prep failed, disabling\n");
    err = -ENODEV;
    - goto free_resources;
    + goto unmap_dma;
    }

    async_tx_ack(tx);
    @@ -851,7 +851,7 @@ int __devinit ioat_dma_self_test(struct ioatdma_device *device)
    if (cookie < 0) {
    dev_err(dev, "Self-test setup failed, disabling\n");
    err = -ENODEV;
    - goto free_resources;
    + goto unmap_dma;
    }
    dma->device_issue_pending(dma_chan);

    @@ -862,7 +862,7 @@ int __devinit ioat_dma_self_test(struct ioatdma_device *device)
    != DMA_SUCCESS) {
    dev_err(dev, "Self-test copy timed out, disabling\n");
    err = -ENODEV;
    - goto free_resources;
    + goto unmap_dma;
    }
    if (memcmp(src, dest, IOAT_TEST_SIZE)) {
    dev_err(dev, "Self-test copy failed compare, disabling\n");
    @@ -870,6 +870,9 @@ int __devinit ioat_dma_self_test(struct ioatdma_device *device)
    goto free_resources;
    }

    +unmap_dma:
    + dma_unmap_single(dev, dma_src, IOAT_TEST_SIZE, DMA_TO_DEVICE);
    + dma_unmap_single(dev, dma_dest, IOAT_TEST_SIZE, DMA_FROM_DEVICE);
    free_resources:
    dma->device_free_chan_resources(dma_chan);
    out:
    --
    1.8.0


    \
     
     \ /
      Last update: 2012-11-05 11:41    [W:2.331 / U:0.132 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site