Patch "drm/v3d/v3d_drv: Check for error num after setting mask" has been added to the 5.17-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    drm/v3d/v3d_drv: Check for error num after setting mask

to the 5.17-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     drm-v3d-v3d_drv-check-for-error-num-after-setting-ma.patch
and it can be found in the queue-5.17 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 562172f54cbb2e03dc40f1e36e14d559c7b5b590
Author: Jiasheng Jiang <jiasheng@xxxxxxxxxxx>
Date:   Mon Jan 10 09:38:07 2022 +0800

    drm/v3d/v3d_drv: Check for error num after setting mask
    
    [ 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@xxxxxxxxxxx>
    Reviewed-by: Melissa Wen <mwen@xxxxxxxxxx>
    Signed-off-by: Melissa Wen <melissa.srw@xxxxxxxxx>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220110013807.4105270-1-jiasheng@xxxxxxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

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);



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux