lkml.org 
[lkml]   [2021]   [Jul]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH v3 05/21] alpha: return error code from alpha_pci_map_sg()
    From: Martin Oliveira <martin.oliveira@eideticom.com>

    The .map_sg() op now expects an error code instead of zero on failure.

    pci_map_single_1() can fail for different reasons, but since the only
    supported type of error return is DMA_MAPPING_ERROR, we coalesce those
    errors into EIO.

    ENOMEM is returned when no page tables can be allocated.

    Signed-off-by: Martin Oliveira <martin.oliveira@eideticom.com>
    Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
    Cc: Richard Henderson <rth@twiddle.net>
    Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
    Cc: Matt Turner <mattst88@gmail.com>
    ---
    arch/alpha/kernel/pci_iommu.c | 10 +++++++---
    1 file changed, 7 insertions(+), 3 deletions(-)

    diff --git a/arch/alpha/kernel/pci_iommu.c b/arch/alpha/kernel/pci_iommu.c
    index 35d7b3096d6e..21f9ac101324 100644
    --- a/arch/alpha/kernel/pci_iommu.c
    +++ b/arch/alpha/kernel/pci_iommu.c
    @@ -649,7 +649,9 @@ static int alpha_pci_map_sg(struct device *dev, struct scatterlist *sg,
    sg->dma_address
    = pci_map_single_1(pdev, SG_ENT_VIRT_ADDRESS(sg),
    sg->length, dac_allowed);
    - return sg->dma_address != DMA_MAPPING_ERROR;
    + if (sg->dma_address == DMA_MAPPING_ERROR)
    + return -EIO;
    + return 1;
    }

    start = sg;
    @@ -685,8 +687,10 @@ static int alpha_pci_map_sg(struct device *dev, struct scatterlist *sg,
    if (out < end)
    out->dma_length = 0;

    - if (out - start == 0)
    + if (out - start == 0) {
    printk(KERN_WARNING "pci_map_sg failed: no entries?\n");
    + return -ENOMEM;
    + }
    DBGA("pci_map_sg: %ld entries\n", out - start);

    return out - start;
    @@ -699,7 +703,7 @@ static int alpha_pci_map_sg(struct device *dev, struct scatterlist *sg,
    entries. Unmap them now. */
    if (out > start)
    pci_unmap_sg(pdev, start, out - start, dir);
    - return 0;
    + return -ENOMEM;
    }

    /* Unmap a set of streaming mode DMA translations. Again, cpu read
    --
    2.20.1
    \
     
     \ /
      Last update: 2021-07-29 22:18    [W:2.761 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site