drm/amdgpu: cache psp runtime boot_cfg_bitmask in sw_int
authorHawking Zhang <Hawking.Zhang@amd.com>
Mon, 7 Jun 2021 03:02:13 +0000 (11:02 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 11 Jun 2021 20:06:15 +0000 (16:06 -0400)
PSP runtime boot_cfg_bitmask carries various psp bl
feature bit mask that can be used by driver. Cache
it in sw_init for further usage.

Signed-off-by: Hawking Zhang <Hawking.Zhang@amd.com>
Reviewed-by: John Clements <john.clements@amd.com>
Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h

index 0f219d4..284a2aa 100644 (file)
@@ -244,6 +244,7 @@ static int psp_sw_init(void *handle)
        struct amdgpu_device *adev = (struct amdgpu_device *)handle;
        struct psp_context *psp = &adev->psp;
        int ret;
+       struct psp_runtime_boot_cfg_entry boot_cfg_entry;
 
        if (!amdgpu_sriov_vf(adev)) {
                ret = psp_init_microcode(psp);
@@ -259,6 +260,12 @@ static int psp_sw_init(void *handle)
                }
        }
 
+       memset(&boot_cfg_entry, 0, sizeof(boot_cfg_entry));
+       if (psp_get_runtime_db_entry(adev,
+                               PSP_RUNTIME_ENTRY_TYPE_BOOT_CONFIG,
+                               &boot_cfg_entry))
+               psp->boot_cfg_bitmask = boot_cfg_entry.boot_cfg_bitmask;
+
        ret = psp_memory_training_init(psp);
        if (ret) {
                DRM_ERROR("Failed to initialize memory training!\n");
index 1d9fa4f..45b27c9 100644 (file)
@@ -379,6 +379,8 @@ struct psp_context
        struct psp_securedisplay_context        securedisplay_context;
        struct mutex                    mutex;
        struct psp_memory_training_context mem_train_ctx;
+
+       uint32_t                        boot_cfg_bitmask;
 };
 
 struct amdgpu_psp_funcs {