diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1115-drm-amdgpu-check-PSP-support-before-adding-the-ip-bl.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/1115-drm-amdgpu-check-PSP-support-before-adding-the-ip-bl.patch | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1115-drm-amdgpu-check-PSP-support-before-adding-the-ip-bl.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1115-drm-amdgpu-check-PSP-support-before-adding-the-ip-bl.patch new file mode 100644 index 00000000..6ef2bba2 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1115-drm-amdgpu-check-PSP-support-before-adding-the-ip-bl.patch @@ -0,0 +1,127 @@ +From 051ce1c69e00fc7d73dc1040a54a46f1d266e474 Mon Sep 17 00:00:00 2001 +From: Evan Quan <evan.quan@amd.com> +Date: Tue, 8 Jan 2019 13:57:29 +0800 +Subject: [PATCH 1115/2940] drm/amdgpu: check PSP support before adding the ip + block + +So that we do not need to check this in every internal function. + +Signed-off-by: Evan Quan <evan.quan@amd.com> +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 24 ------------------------ + drivers/gpu/drm/amd/amdgpu/soc15.c | 13 ++++++++----- + 2 files changed, 8 insertions(+), 29 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +index 624308d788a0..b2a48a32fa27 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +@@ -68,9 +68,6 @@ static int psp_sw_init(void *handle) + + psp->adev = adev; + +- if (adev->firmware.load_type != AMDGPU_FW_LOAD_PSP) +- return 0; +- + ret = psp_init_microcode(psp); + if (ret) { + DRM_ERROR("Failed to load psp firmware!\n"); +@@ -84,9 +81,6 @@ static int psp_sw_fini(void *handle) + { + struct amdgpu_device *adev = (struct amdgpu_device *)handle; + +- if (adev->firmware.load_type != AMDGPU_FW_LOAD_PSP) +- return 0; +- + release_firmware(adev->psp.sos_fw); + adev->psp.sos_fw = NULL; + release_firmware(adev->psp.asd_fw); +@@ -725,10 +719,6 @@ static int psp_hw_init(void *handle) + int ret; + struct amdgpu_device *adev = (struct amdgpu_device *)handle; + +- +- if (adev->firmware.load_type != AMDGPU_FW_LOAD_PSP) +- return 0; +- + mutex_lock(&adev->firmware.mutex); + /* + * This sequence is just used on hw_init only once, no need on +@@ -758,9 +748,6 @@ static int psp_hw_fini(void *handle) + struct amdgpu_device *adev = (struct amdgpu_device *)handle; + struct psp_context *psp = &adev->psp; + +- if (adev->firmware.load_type != AMDGPU_FW_LOAD_PSP) +- return 0; +- + if (adev->gmc.xgmi.num_physical_nodes > 1 && + psp->xgmi_context.initialized == 1) + psp_xgmi_terminate(psp); +@@ -789,9 +776,6 @@ static int psp_suspend(void *handle) + struct amdgpu_device *adev = (struct amdgpu_device *)handle; + struct psp_context *psp = &adev->psp; + +- if (adev->firmware.load_type != AMDGPU_FW_LOAD_PSP) +- return 0; +- + if (adev->gmc.xgmi.num_physical_nodes > 1 && + psp->xgmi_context.initialized == 1) { + ret = psp_xgmi_terminate(psp); +@@ -816,9 +800,6 @@ static int psp_resume(void *handle) + struct amdgpu_device *adev = (struct amdgpu_device *)handle; + struct psp_context *psp = &adev->psp; + +- if (adev->firmware.load_type != AMDGPU_FW_LOAD_PSP) +- return 0; +- + DRM_INFO("PSP is resuming...\n"); + + mutex_lock(&adev->firmware.mutex); +@@ -854,11 +835,6 @@ static bool psp_check_fw_loading_status(struct amdgpu_device *adev, + { + struct amdgpu_firmware_info *ucode = NULL; + +- if (adev->firmware.load_type != AMDGPU_FW_LOAD_PSP) { +- DRM_INFO("firmware is not loaded by PSP\n"); +- return true; +- } +- + if (!adev->firmware.fw_size) + return false; + +diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c b/drivers/gpu/drm/amd/amdgpu/soc15.c +index 4b4dcadc2a5d..9b3b6bba8476 100644 +--- a/drivers/gpu/drm/amd/amdgpu/soc15.c ++++ b/drivers/gpu/drm/amd/amdgpu/soc15.c +@@ -595,10 +595,12 @@ int soc15_set_ip_blocks(struct amdgpu_device *adev) + amdgpu_device_ip_block_add(adev, &vega10_common_ip_block); + amdgpu_device_ip_block_add(adev, &gmc_v9_0_ip_block); + amdgpu_device_ip_block_add(adev, &vega10_ih_ip_block); +- if (adev->asic_type == CHIP_VEGA20) +- amdgpu_device_ip_block_add(adev, &psp_v11_0_ip_block); +- else +- amdgpu_device_ip_block_add(adev, &psp_v3_1_ip_block); ++ if (likely(adev->firmware.load_type == AMDGPU_FW_LOAD_PSP)) { ++ if (adev->asic_type == CHIP_VEGA20) ++ amdgpu_device_ip_block_add(adev, &psp_v11_0_ip_block); ++ else ++ amdgpu_device_ip_block_add(adev, &psp_v3_1_ip_block); ++ } + amdgpu_device_ip_block_add(adev, &gfx_v9_0_ip_block); + amdgpu_device_ip_block_add(adev, &sdma_v4_0_ip_block); + if (!amdgpu_sriov_vf(adev)) +@@ -620,7 +622,8 @@ int soc15_set_ip_blocks(struct amdgpu_device *adev) + amdgpu_device_ip_block_add(adev, &vega10_common_ip_block); + amdgpu_device_ip_block_add(adev, &gmc_v9_0_ip_block); + amdgpu_device_ip_block_add(adev, &vega10_ih_ip_block); +- amdgpu_device_ip_block_add(adev, &psp_v10_0_ip_block); ++ if (likely(adev->firmware.load_type == AMDGPU_FW_LOAD_PSP)) ++ amdgpu_device_ip_block_add(adev, &psp_v10_0_ip_block); + amdgpu_device_ip_block_add(adev, &gfx_v9_0_ip_block); + amdgpu_device_ip_block_add(adev, &sdma_v4_0_ip_block); + amdgpu_device_ip_block_add(adev, &pp_smu_ip_block); +-- +2.17.1 + |