lkml.org 
[lkml]   [2021]   [Nov]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.15 59/68] drm/amdgpu: fix byteorder error in amdgpu discovery
    Date
    From: Yang Wang <KevinYang.Wang@amd.com>

    [ Upstream commit fd08953b2de911f32c06aedbc8ad111c2fd0168b ]

    fix some byteorder issues about amdgpu discovery.
    This will result in running errors on the big end system. (e.g:MIPS)

    Signed-off-by: Yang Wang <KevinYang.Wang@amd.com>
    Reviewed-by: Guchun Chen <guchun.chen@amd.com>
    Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c | 12 ++++++------
    1 file changed, 6 insertions(+), 6 deletions(-)

    diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
    index ada7bc19118ac..a12272a0c8844 100644
    --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
    +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
    @@ -190,8 +190,8 @@ static int amdgpu_discovery_init(struct amdgpu_device *adev)

    offset = offsetof(struct binary_header, binary_checksum) +
    sizeof(bhdr->binary_checksum);
    - size = bhdr->binary_size - offset;
    - checksum = bhdr->binary_checksum;
    + size = le16_to_cpu(bhdr->binary_size) - offset;
    + checksum = le16_to_cpu(bhdr->binary_checksum);

    if (!amdgpu_discovery_verify_checksum(adev->mman.discovery_bin + offset,
    size, checksum)) {
    @@ -212,7 +212,7 @@ static int amdgpu_discovery_init(struct amdgpu_device *adev)
    }

    if (!amdgpu_discovery_verify_checksum(adev->mman.discovery_bin + offset,
    - ihdr->size, checksum)) {
    + le16_to_cpu(ihdr->size), checksum)) {
    DRM_ERROR("invalid ip discovery data table checksum\n");
    r = -EINVAL;
    goto out;
    @@ -224,7 +224,7 @@ static int amdgpu_discovery_init(struct amdgpu_device *adev)
    ghdr = (struct gpu_info_header *)(adev->mman.discovery_bin + offset);

    if (!amdgpu_discovery_verify_checksum(adev->mman.discovery_bin + offset,
    - ghdr->size, checksum)) {
    + le32_to_cpu(ghdr->size), checksum)) {
    DRM_ERROR("invalid gc data table checksum\n");
    r = -EINVAL;
    goto out;
    @@ -395,10 +395,10 @@ void amdgpu_discovery_harvest_ip(struct amdgpu_device *adev)
    le16_to_cpu(bhdr->table_list[HARVEST_INFO].offset));

    for (i = 0; i < 32; i++) {
    - if (le32_to_cpu(harvest_info->list[i].hw_id) == 0)
    + if (le16_to_cpu(harvest_info->list[i].hw_id) == 0)
    break;

    - switch (le32_to_cpu(harvest_info->list[i].hw_id)) {
    + switch (le16_to_cpu(harvest_info->list[i].hw_id)) {
    case VCN_HWID:
    vcn_harvest_count++;
    break;
    --
    2.33.0
    \
     
     \ /
      Last update: 2021-11-30 15:55    [W:4.219 / U:0.820 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site