drm/amd/amdgpu: stored bios_size
authorEvan Quan <evan.quan@amd.com>
Wed, 7 Dec 2016 01:56:46 +0000 (09:56 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 8 Dec 2016 19:09:05 +0000 (14:09 -0500)
It's necessary if we want to export vbios image out.

Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net>
Signed-off-by: Evan Quan <evan.quan@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian Koenig <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu.h
drivers/gpu/drm/amd/amdgpu/amdgpu_bios.c

index 29d3a91..f31936b 100644 (file)
@@ -1330,6 +1330,7 @@ struct amdgpu_device {
 
        /* BIOS */
        uint8_t                         *bios;
+       uint32_t                        bios_size;
        bool                            is_atom_bios;
        struct amdgpu_bo                *stollen_vga_memory;
        uint32_t                        bios_scratch[AMDGPU_BIOS_NUM_SCRATCH];
index b7e2762..4f973a9 100644 (file)
@@ -74,6 +74,7 @@ static bool igp_read_bios_from_vram(struct amdgpu_device *adev)
                iounmap(bios);
                return false;
        }
+       adev->bios_size = size;
        memcpy_fromio(adev->bios, bios, size);
        iounmap(bios);
        return true;
@@ -103,6 +104,7 @@ bool amdgpu_read_bios(struct amdgpu_device *adev)
                pci_unmap_rom(adev->pdev, bios);
                return false;
        }
+       adev->bios_size = size;
        memcpy_fromio(adev->bios, bios, size);
        pci_unmap_rom(adev->pdev, bios);
        return true;
@@ -135,6 +137,7 @@ static bool amdgpu_read_bios_from_rom(struct amdgpu_device *adev)
                DRM_ERROR("no memory to allocate for BIOS\n");
                return false;
        }
+       adev->bios_size = len;
 
        /* read complete BIOS */
        return amdgpu_asic_read_bios_from_rom(adev, adev->bios, len);
@@ -159,6 +162,7 @@ static bool amdgpu_read_platform_bios(struct amdgpu_device *adev)
        if (adev->bios == NULL) {
                return false;
        }
+       adev->bios_size = size;
 
        return true;
 }
@@ -273,6 +277,7 @@ static bool amdgpu_atrm_get_bios(struct amdgpu_device *adev)
                kfree(adev->bios);
                return false;
        }
+       adev->bios_size = size;
        return true;
 }
 #else
@@ -334,6 +339,7 @@ static bool amdgpu_acpi_vfct_bios(struct amdgpu_device *adev)
        }
 
        adev->bios = kmemdup(&vbios->VbiosContent, vhdr->ImageLength, GFP_KERNEL);
+       adev->bios_size = vhdr->ImageLength;
        ret = !!adev->bios;
 
 out_unmap: