aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3279-drm-amdgpu-soc15-don-t-abuse-IP-soft-reset-for-adapt.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3279-drm-amdgpu-soc15-don-t-abuse-IP-soft-reset-for-adapt.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3279-drm-amdgpu-soc15-don-t-abuse-IP-soft-reset-for-adapt.patch90
1 files changed, 90 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3279-drm-amdgpu-soc15-don-t-abuse-IP-soft-reset-for-adapt.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3279-drm-amdgpu-soc15-don-t-abuse-IP-soft-reset-for-adapt.patch
new file mode 100644
index 00000000..e1ec236f
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3279-drm-amdgpu-soc15-don-t-abuse-IP-soft-reset-for-adapt.patch
@@ -0,0 +1,90 @@
+From 75f5209e1b1d79276782ce118976905fae7bfec9 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Tue, 23 Jan 2018 16:27:31 -0500
+Subject: [PATCH 3279/4131] drm/amdgpu/soc15: don't abuse IP soft reset for
+ adapter reset
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The IP soft reset interface is for per IP reset but it was
+being abused for adapter reset on soc15 asics. Adjust the
+interface to make it explicit.
+
+Reviewed-by: Christian König <christian.koenig@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 17 +++--------------
+ drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h | 2 ++
+ drivers/gpu/drm/amd/amdgpu/soc15.c | 7 +------
+ 3 files changed, 6 insertions(+), 20 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
+index b89873f1..c63516b 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
+@@ -496,19 +496,8 @@ static int psp_resume(void *handle)
+ return ret;
+ }
+
+-static bool psp_check_reset(void* handle)
++int psp_gpu_reset(struct amdgpu_device *adev)
+ {
+- struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+-
+- if (adev->flags & AMD_IS_APU)
+- return true;
+-
+- return false;
+-}
+-
+-static int psp_reset(void* handle)
+-{
+- struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+ return psp_mode1_reset(&adev->psp);
+ }
+
+@@ -555,9 +544,9 @@ const struct amd_ip_funcs psp_ip_funcs = {
+ .suspend = psp_suspend,
+ .resume = psp_resume,
+ .is_idle = NULL,
+- .check_soft_reset = psp_check_reset,
++ .check_soft_reset = NULL,
+ .wait_for_idle = NULL,
+- .soft_reset = psp_reset,
++ .soft_reset = NULL,
+ .set_clockgating_state = psp_set_clockgating_state,
+ .set_powergating_state = psp_set_powergating_state,
+ };
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h
+index cf28abc..1292096 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h
+@@ -158,4 +158,6 @@ extern int psp_wait_for(struct psp_context *psp, uint32_t reg_index,
+
+ extern const struct amdgpu_ip_block_version psp_v10_0_ip_block;
+
++int psp_gpu_reset(struct amdgpu_device *adev);
++
+ #endif
+diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c b/drivers/gpu/drm/amd/amdgpu/soc15.c
+index 04a471b..8dc8b72 100644
+--- a/drivers/gpu/drm/amd/amdgpu/soc15.c
++++ b/drivers/gpu/drm/amd/amdgpu/soc15.c
+@@ -417,12 +417,7 @@ static int soc15_asic_reset(struct amdgpu_device *adev)
+
+ pci_save_state(adev->pdev);
+
+- for (i = 0; i < AMDGPU_MAX_IP_NUM; i++) {
+- if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_PSP){
+- adev->ip_blocks[i].version->funcs->soft_reset((void *)adev);
+- break;
+- }
+- }
++ psp_gpu_reset(adev);
+
+ pci_restore_state(adev->pdev);
+
+--
+2.7.4
+