diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/5666-drm-amdkfd-Check-ctx_save_restore_area_address.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.14.71/5666-drm-amdkfd-Check-ctx_save_restore_area_address.patch | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/5666-drm-amdkfd-Check-ctx_save_restore_area_address.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/5666-drm-amdkfd-Check-ctx_save_restore_area_address.patch new file mode 100644 index 00000000..20cdd0d4 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/5666-drm-amdkfd-Check-ctx_save_restore_area_address.patch @@ -0,0 +1,63 @@ +From b71eb443cca193b451af611cf2951d1ec925abfd Mon Sep 17 00:00:00 2001 +From: Felix Kuehling <Felix.Kuehling@amd.com> +Date: Wed, 25 Apr 2018 17:34:07 -0400 +Subject: [PATCH 5666/5725] drm/amdkfd: Check ctx_save_restore_area_address + +Only program cp_hqd_ctx_save_control if the save restore area has a +valid virtual address. Otherwise save restore can not be safely +enabled for a queue. + +Change-Id: Ibcf19713068c5733988f8a4472755d56d2e72d8b +Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> +--- + drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c | 4 ++-- + drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c +index 5118995..f4eced5 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c +@@ -159,7 +159,7 @@ static int init_mqd(struct mqd_manager *mm, void **mqd, + (1 << COMPUTE_PGM_RSRC2__TRAP_PRESENT__SHIFT); + } + +- if (mm->dev->cwsr_enabled) { ++ if (mm->dev->cwsr_enabled && q->ctx_save_restore_area_address) { + m->cp_hqd_persistent_state |= + (1 << CP_HQD_PERSISTENT_STATE__QSWITCH_MODE__SHIFT); + m->cp_hqd_ctx_save_base_addr_lo = +@@ -249,7 +249,7 @@ static int update_mqd(struct mqd_manager *mm, void *mqd, + if (priv_cp_queues) + m->cp_hqd_pq_control |= + 1 << CP_HQD_PQ_CONTROL__PRIV_STATE__SHIFT; +- if (mm->dev->cwsr_enabled) ++ if (mm->dev->cwsr_enabled && q->ctx_save_restore_area_address) + m->cp_hqd_ctx_save_control = 0; + + update_cu_mask(mm, mqd, q); +diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c +index eff7580..c537f37 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c +@@ -159,7 +159,7 @@ static int init_mqd(struct mqd_manager *mm, void **mqd, + (1 << COMPUTE_PGM_RSRC2__TRAP_PRESENT__SHIFT); + } + +- if (mm->dev->cwsr_enabled) { ++ if (mm->dev->cwsr_enabled && q->ctx_save_restore_area_address) { + m->cp_hqd_persistent_state |= + (1 << CP_HQD_PERSISTENT_STATE__QSWITCH_MODE__SHIFT); + m->cp_hqd_ctx_save_base_addr_lo = +@@ -254,7 +254,7 @@ static int __update_mqd(struct mqd_manager *mm, void *mqd, + if (priv_cp_queues) + m->cp_hqd_pq_control |= + 1 << CP_HQD_PQ_CONTROL__PRIV_STATE__SHIFT; +- if (mm->dev->cwsr_enabled) ++ if (mm->dev->cwsr_enabled && q->ctx_save_restore_area_address) + m->cp_hqd_ctx_save_control = + atc_bit << CP_HQD_CTX_SAVE_CONTROL__ATC__SHIFT | + mtype << CP_HQD_CTX_SAVE_CONTROL__MTYPE__SHIFT; +-- +2.7.4 + |