aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3954-drm-amd-pp-Save-vf-state-in-pp-context.patch
diff options
context:
space:
mode:
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.patch151
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
+