From: Xiaojie Yuan Date: Wed, 27 Mar 2019 04:21:40 +0000 (+0800) Subject: drm/amdgpu/discovery: stop taking psp header into account X-Git-Tag: v5.15~5873^2~13^2~364 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8e84aa1bf2af81346cc8a3aaab630bc86a4af681;p=platform%2Fkernel%2Flinux-starfive.git drm/amdgpu/discovery: stop taking psp header into account 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 Reviewed-by: Hawking Zhang Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c index ec14fd1..5f967ae 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));