drm/amdgpu/psp: add structure to support PSP SPL
authorLikun Gao <Likun.Gao@amd.com>
Wed, 6 May 2020 06:57:13 +0000 (14:57 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 1 Jul 2020 05:59:13 +0000 (01:59 -0400)
Add support for PSP SPL (Security patch level) table to support
anti-rollback of FW loaded by Trusted OS.

Signed-off-by: Likun Gao <Likun.Gao@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h
drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h

index e19b98d48c98427f4923075298b105eceb3017f7..e66958a01458653e6ec5110d9201a891406dd922 100644 (file)
@@ -222,10 +222,12 @@ struct psp_context
        uint32_t                        sos_bin_size;
        uint32_t                        toc_bin_size;
        uint32_t                        kdb_bin_size;
+       uint32_t                        spl_bin_size;
        uint8_t                         *sys_start_addr;
        uint8_t                         *sos_start_addr;
        uint8_t                         *toc_start_addr;
        uint8_t                         *kdb_start_addr;
+       uint8_t                         *spl_start_addr;
 
        /* tmr buffer */
        struct amdgpu_bo                *tmr_bo;
index b0e656409c0387f75c90153be14049563d26e20f..df402c7b32339a0c244ebf876c0b676d212be576 100644 (file)
@@ -99,6 +99,14 @@ struct psp_firmware_header_v1_2 {
        uint32_t kdb_size_bytes;
 };
 
+/* version_major=1, version_minor=3 */
+struct psp_firmware_header_v1_3 {
+       struct psp_firmware_header_v1_1 v1_1;
+       uint32_t spl_header_version;
+       uint32_t spl_offset_bytes;
+       uint32_t spl_size_bytes;
+};
+
 /* version_major=1, version_minor=0 */
 struct ta_firmware_header_v1_0 {
        struct common_firmware_header header;
@@ -266,6 +274,7 @@ union amdgpu_firmware_header {
        struct smc_firmware_header_v2_0 smc_v2_0;
        struct psp_firmware_header_v1_0 psp;
        struct psp_firmware_header_v1_1 psp_v1_1;
+       struct psp_firmware_header_v1_3 psp_v1_3;
        struct ta_firmware_header_v1_0 ta;
        struct gfx_firmware_header_v1_0 gfx;
        struct rlc_firmware_header_v1_0 rlc;