lkml.org 
[lkml]   [2021]   [Jun]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 41/88] radeon: use memcpy_to/fromio for UVD fw upload
    Date
    From: Chen Li <chenli@uniontech.com>

    [ Upstream commit ab8363d3875a83f4901eb1cc00ce8afd24de6c85 ]

    I met a gpu addr bug recently and the kernel log
    tells me the pc is memcpy/memset and link register is
    radeon_uvd_resume.

    As we know, in some architectures, optimized memcpy/memset
    may not work well on device memory. Trival memcpy_toio/memset_io
    can fix this problem.

    BTW, amdgpu has already done it in:
    commit ba0b2275a678 ("drm/amdgpu: use memcpy_to/fromio for UVD fw upload"),
    that's why it has no this issue on the same gpu and platform.

    Signed-off-by: Chen Li <chenli@uniontech.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/gpu/drm/radeon/radeon_uvd.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    diff --git a/drivers/gpu/drm/radeon/radeon_uvd.c b/drivers/gpu/drm/radeon/radeon_uvd.c
    index 95f4db70dd22..fde9c69ecc86 100644
    --- a/drivers/gpu/drm/radeon/radeon_uvd.c
    +++ b/drivers/gpu/drm/radeon/radeon_uvd.c
    @@ -286,7 +286,7 @@ int radeon_uvd_resume(struct radeon_device *rdev)
    if (rdev->uvd.vcpu_bo == NULL)
    return -EINVAL;

    - memcpy(rdev->uvd.cpu_addr, rdev->uvd_fw->data, rdev->uvd_fw->size);
    + memcpy_toio((void __iomem *)rdev->uvd.cpu_addr, rdev->uvd_fw->data, rdev->uvd_fw->size);

    size = radeon_bo_size(rdev->uvd.vcpu_bo);
    size -= rdev->uvd_fw->size;
    @@ -294,7 +294,7 @@ int radeon_uvd_resume(struct radeon_device *rdev)
    ptr = rdev->uvd.cpu_addr;
    ptr += rdev->uvd_fw->size;

    - memset(ptr, 0, size);
    + memset_io((void __iomem *)ptr, 0, size);

    return 0;
    }
    --
    2.30.2
    \
     
     \ /
      Last update: 2021-06-28 17:10    [W:5.528 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site