lkml.org 
[lkml]   [2022]   [Apr]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.17 0431/1126] drm/v3d/v3d_drv: Check for error num after setting mask
    Date
    From: Jiasheng Jiang <jiasheng@iscas.ac.cn>

    [ Upstream commit 4a39156166b90465da0f9a33b3442d63b5651bec ]

    Because of the possible failure of the dma_supported(), the
    dma_set_mask_and_coherent() may return error num.
    Therefore, it should be better to check it and return the error if
    fails.
    Also, we can create a variable for the mask to solve the
    alignment issue.

    Fixes: 334dd38a3878 ("drm/v3d: Set dma_mask as well as coherent_dma_mask")
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Reviewed-by: Melissa Wen <mwen@igalia.com>
    Signed-off-by: Melissa Wen <melissa.srw@gmail.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220110013807.4105270-1-jiasheng@iscas.ac.cn
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/gpu/drm/v3d/v3d_drv.c | 8 ++++++--
    1 file changed, 6 insertions(+), 2 deletions(-)

    diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
    index bd46396a1ae0..1afcd54fbbd5 100644
    --- a/drivers/gpu/drm/v3d/v3d_drv.c
    +++ b/drivers/gpu/drm/v3d/v3d_drv.c
    @@ -219,6 +219,7 @@ static int v3d_platform_drm_probe(struct platform_device *pdev)
    int ret;
    u32 mmu_debug;
    u32 ident1;
    + u64 mask;

    v3d = devm_drm_dev_alloc(dev, &v3d_drm_driver, struct v3d_dev, drm);
    if (IS_ERR(v3d))
    @@ -237,8 +238,11 @@ static int v3d_platform_drm_probe(struct platform_device *pdev)
    return ret;

    mmu_debug = V3D_READ(V3D_MMU_DEBUG_INFO);
    - dma_set_mask_and_coherent(dev,
    - DMA_BIT_MASK(30 + V3D_GET_FIELD(mmu_debug, V3D_MMU_PA_WIDTH)));
    + mask = DMA_BIT_MASK(30 + V3D_GET_FIELD(mmu_debug, V3D_MMU_PA_WIDTH));
    + ret = dma_set_mask_and_coherent(dev, mask);
    + if (ret)
    + return ret;
    +
    v3d->va_width = 30 + V3D_GET_FIELD(mmu_debug, V3D_MMU_VA_WIDTH);

    ident1 = V3D_READ(V3D_HUB_IDENT1);
    --
    2.34.1


    \
     
     \ /
      Last update: 2022-04-05 10:40    [W:2.464 / U:0.180 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site