diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3954-drm-amd-pp-Save-vf-state-in-pp-context.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3954-drm-amd-pp-Save-vf-state-in-pp-context.patch | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3954-drm-amd-pp-Save-vf-state-in-pp-context.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3954-drm-amd-pp-Save-vf-state-in-pp-context.patch new file mode 100644 index 00000000..442a129a --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3954-drm-amd-pp-Save-vf-state-in-pp-context.patch @@ -0,0 +1,151 @@ +From 8fbcaf0f6d127662da826933e37073ac7d1fcdd5 Mon Sep 17 00:00:00 2001 +From: Rex Zhu <Rex.Zhu@amd.com> +Date: Thu, 22 Mar 2018 15:46:47 +0800 +Subject: [PATCH 3954/4131] drm/amd/pp: Save vf state in pp context + +Store vf state in pp_context so we can +deprecate the cgs interface. + +Change-Id: Icda8ac8f235cf4f6d3c9ba0d30576891d2a86f29 +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +Signed-off-by: Rex Zhu <Rex.Zhu@amd.com> +--- + drivers/gpu/drm/amd/powerplay/amd_powerplay.c | 3 ++- + drivers/gpu/drm/amd/powerplay/inc/hwmgr.h | 1 + + drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c | 7 +++---- + drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c | 3 +-- + drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c | 10 +++++----- + drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c | 3 +-- + 6 files changed, 13 insertions(+), 14 deletions(-) + +diff --git a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c +index e32d984..d1f4bb0 100644 +--- a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c ++++ b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c +@@ -46,7 +46,8 @@ static int amd_powerplay_create(struct amdgpu_device *adev) + return -ENOMEM; + + hwmgr->adev = adev; +- hwmgr->pm_en = (amdgpu_dpm != 0 && !amdgpu_sriov_vf(adev)) ? true : false; ++ hwmgr->not_vf = !amdgpu_sriov_vf(adev); ++ hwmgr->pm_en = (amdgpu_dpm && hwmgr->not_vf) ? true : false; + hwmgr->device = amdgpu_cgs_create_device(adev); + mutex_init(&hwmgr->smu_lock); + hwmgr->chip_family = adev->family; +diff --git a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h +index d6c9a3b..d5cadc6 100644 +--- a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h ++++ b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h +@@ -718,6 +718,7 @@ struct pp_hwmgr { + uint32_t chip_family; + uint32_t chip_id; + uint32_t smu_version; ++ bool not_vf; + bool pm_en; + struct mutex smu_lock; + +diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c +index faef783..35b947e 100644 +--- a/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c ++++ b/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c +@@ -288,8 +288,7 @@ static int fiji_start_smu(struct pp_hwmgr *hwmgr) + struct fiji_smumgr *priv = (struct fiji_smumgr *)(hwmgr->smu_backend); + + /* Only start SMC if SMC RAM is not running */ +- if (!(smu7_is_smc_ram_running(hwmgr) +- || cgs_is_virtualization_enabled(hwmgr->device))) { ++ if (!smu7_is_smc_ram_running(hwmgr) && hwmgr->not_vf) { + /* Check if SMU is running in protected mode */ + if (0 == PHM_READ_VFPF_INDIRECT_FIELD(hwmgr->device, + CGS_IND_REG__SMC, +@@ -335,8 +334,8 @@ static bool fiji_is_hw_avfs_present(struct pp_hwmgr *hwmgr) + uint32_t efuse = 0; + uint32_t mask = (1 << ((AVFS_EN_MSB - AVFS_EN_LSB) + 1)) - 1; + +- if (cgs_is_virtualization_enabled(hwmgr->device)) +- return 0; ++ if (!hwmgr->not_vf) ++ return false; + + if (!atomctrl_read_efuse(hwmgr->device, AVFS_EN_LSB, AVFS_EN_MSB, + mask, &efuse)) { +diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c +index fe6854e..05e60e8 100644 +--- a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c ++++ b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c +@@ -295,8 +295,7 @@ static int polaris10_start_smu(struct pp_hwmgr *hwmgr) + struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend); + + /* Only start SMC if SMC RAM is not running */ +- if (!(smu7_is_smc_ram_running(hwmgr) +- || cgs_is_virtualization_enabled(hwmgr->device))) { ++ if (!smu7_is_smc_ram_running(hwmgr) && hwmgr->not_vf) { + smu_data->protected_mode = (uint8_t) (PHM_READ_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, SMU_FIRMWARE, SMU_MODE)); + smu_data->smu7_data.security_hard_key = (uint8_t) (PHM_READ_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, SMU_FIRMWARE, SMU_SEL)); + +diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c +index 0399c10..3684822 100644 +--- a/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c ++++ b/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c +@@ -375,7 +375,7 @@ static int smu7_populate_single_firmware_entry(struct pp_hwmgr *hwmgr, + entry->meta_data_addr_low = 0; + + /* digest need be excluded out */ +- if (cgs_is_virtualization_enabled(hwmgr->device)) ++ if (!hwmgr->not_vf) + info.image_size -= 20; + entry->data_size_byte = info.image_size; + entry->num_register_entries = 0; +@@ -409,7 +409,7 @@ int smu7_request_smu_load_fw(struct pp_hwmgr *hwmgr) + 0x0); + + if (hwmgr->chip_id > CHIP_TOPAZ) { /* add support for Topaz */ +- if (!cgs_is_virtualization_enabled(hwmgr->device)) { ++ if (hwmgr->not_vf) { + smu7_send_msg_to_smc_with_parameter(hwmgr, + PPSMC_MSG_SMU_DRAM_ADDR_HI, + upper_32_bits(smu_data->smu_buffer.mc_addr)); +@@ -467,7 +467,7 @@ int smu7_request_smu_load_fw(struct pp_hwmgr *hwmgr) + PP_ASSERT_WITH_CODE(0 == smu7_populate_single_firmware_entry(hwmgr, + UCODE_ID_SDMA1, &toc->entry[toc->num_entries++]), + "Failed to Get Firmware Entry.", return -EINVAL); +- if (cgs_is_virtualization_enabled(hwmgr->device)) ++ if (!hwmgr->not_vf) + PP_ASSERT_WITH_CODE(0 == smu7_populate_single_firmware_entry(hwmgr, + UCODE_ID_MEC_STORAGE, &toc->entry[toc->num_entries++]), + "Failed to Get Firmware Entry.", return -EINVAL); +@@ -608,7 +608,7 @@ int smu7_init(struct pp_hwmgr *hwmgr) + smu_data->header = smu_data->header_buffer.kaddr; + smu_data->header_buffer.mc_addr = mc_addr; + +- if (cgs_is_virtualization_enabled(hwmgr->device)) ++ if (!hwmgr->not_vf) + return 0; + + smu_data->smu_buffer.data_size = 200*4096; +@@ -643,7 +643,7 @@ int smu7_smu_fini(struct pp_hwmgr *hwmgr) + &smu_data->header_buffer.mc_addr, + &smu_data->header_buffer.kaddr); + +- if (!cgs_is_virtualization_enabled(hwmgr->device)) ++ if (hwmgr->not_vf) + amdgpu_bo_free_kernel(&smu_data->smu_buffer.handle, + &smu_data->smu_buffer.mc_addr, + &smu_data->smu_buffer.kaddr); +diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c +index b51d746..2ba05d2 100644 +--- a/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c ++++ b/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c +@@ -199,8 +199,7 @@ static int tonga_start_smu(struct pp_hwmgr *hwmgr) + int result; + + /* Only start SMC if SMC RAM is not running */ +- if (!(smu7_is_smc_ram_running(hwmgr) || +- cgs_is_virtualization_enabled(hwmgr->device))) { ++ if (!smu7_is_smc_ram_running(hwmgr) && hwmgr->not_vf) { + /*Check if SMU is running in protected mode*/ + if (0 == PHM_READ_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, + SMU_FIRMWARE, SMU_MODE)) { +-- +2.7.4 + |