From: Xiaojie Yuan <[email protected]>

psp will write a header to vram, but the value exposed in
RCC_CONFIG_MEMSIZE does not include the memory that this header is
written to. Therefore, the interpretation of the table does not need to
take the psp header into account.

Signed-off-by: Xiaojie Yuan <[email protected]>
Reviewed-by: Hawking Zhang <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
index ec14fd1350e2..5f967ae8d4ed 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
@@ -189,7 +189,7 @@ int amdgpu_discovery_init(struct amdgpu_device *adev)
                goto out;
        }
 
-       bhdr = (struct binary_header *)(adev->discovery + PSP_HEADER_SIZE);
+       bhdr = (struct binary_header *)adev->discovery;
 
        if (le32_to_cpu(bhdr->binary_signature) != BINARY_SIGNATURE) {
                DRM_ERROR("invalid ip discovery binary signature\n");
@@ -197,8 +197,7 @@ int amdgpu_discovery_init(struct amdgpu_device *adev)
                goto out;
        }
 
-       offset = PSP_HEADER_SIZE +
-               offsetof(struct binary_header, binary_checksum) +
+       offset = offsetof(struct binary_header, binary_checksum) +
                sizeof(bhdr->binary_checksum);
        size = bhdr->binary_size - offset;
        checksum = bhdr->binary_checksum;
@@ -275,7 +274,7 @@ int amdgpu_discovery_reg_base_init(struct amdgpu_device 
*adev)
                return -EINVAL;
        }
 
-       bhdr = (struct binary_header *)(adev->discovery + PSP_HEADER_SIZE);
+       bhdr = (struct binary_header *)adev->discovery;
        ihdr = (struct ip_discovery_header *)(adev->discovery +
                        le16_to_cpu(bhdr->table_list[IP_DISCOVERY].offset));
        num_dies = le16_to_cpu(ihdr->num_dies);
@@ -338,7 +337,7 @@ int amdgpu_discovery_get_ip_version(struct amdgpu_device 
*adev, int hw_id,
                return -EINVAL;
        }
 
-       bhdr = (struct binary_header *)(adev->discovery + PSP_HEADER_SIZE);
+       bhdr = (struct binary_header *)adev->discovery;
        ihdr = (struct ip_discovery_header *)(adev->discovery +
                        le16_to_cpu(bhdr->table_list[IP_DISCOVERY].offset));
        num_dies = le16_to_cpu(ihdr->num_dies);
@@ -376,7 +375,7 @@ int amdgpu_discovery_get_gfx_info(struct amdgpu_device 
*adev)
                return -EINVAL;
        }
 
-       bhdr = (struct binary_header *)(adev->discovery + PSP_HEADER_SIZE);
+       bhdr = (struct binary_header *)adev->discovery;
        gc_info = (struct gc_info_v1_0 *)(adev->discovery +
                        le16_to_cpu(bhdr->table_list[GC].offset));
 
-- 
2.20.1

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to