diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1711-drm-amdgpu-Use-spin-lock-instead-of-mutex-in-tlb-inv.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1711-drm-amdgpu-Use-spin-lock-instead-of-mutex-in-tlb-inv.patch | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1711-drm-amdgpu-Use-spin-lock-instead-of-mutex-in-tlb-inv.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1711-drm-amdgpu-Use-spin-lock-instead-of-mutex-in-tlb-inv.patch new file mode 100644 index 00000000..e18f7311 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1711-drm-amdgpu-Use-spin-lock-instead-of-mutex-in-tlb-inv.patch @@ -0,0 +1,70 @@ +From 0ca7e35039f5cec771e61add0a6d76ba967acdc2 Mon Sep 17 00:00:00 2001 +From: ozeng <oak.zeng@amd.com> +Date: Tue, 6 Jun 2017 20:24:49 -0500 +Subject: [PATCH 1711/4131] drm/amdgpu: Use spin lock instead of mutex in tlb + invalidation + +Change-Id: Ic7b6da7efe4785b952c0bdf73fa650cab8e021f7 +Signed-off-by: <Oak.Zeng@amd.com> + + Conflicts: + drivers/gpu/drm/amd/amdgpu/amdgpu.h +--- + drivers/gpu/drm/amd/amdgpu/amdgpu.h | 3 +++ + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c | 4 +++- + drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 1 + + 3 files changed, 7 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h +index ee6069f..265ddb3 100755 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h +@@ -1663,8 +1663,11 @@ struct amdgpu_device { + + /* record hw reset is performed */ + bool has_hw_reset; ++ + u8 reset_magic[AMDGPU_RESET_MAGIC_NUM]; + ++ spinlock_t tlb_invalidation_lock; ++ + /* record last mm index being written through WREG32*/ + unsigned long last_mm_index; + }; +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c +index 33b4077..e84c115 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c +@@ -920,7 +920,7 @@ static void write_vmid_invalidate_request(struct kgd_dev *kgd, uint8_t vmid) + VM_INVALIDATE_ENG16_REQ__INVALIDATE_L2_PDE2_MASK | + VM_INVALIDATE_ENG16_REQ__INVALIDATE_L1_PTES_MASK; + +- mutex_lock(&adev->srbm_mutex); ++ spin_lock(&adev->tlb_invalidation_lock); + + /* Use light weight invalidation. + * +@@ -956,6 +956,8 @@ static void write_vmid_invalidate_request(struct kgd_dev *kgd, uint8_t vmid) + mmMMHUB_VM_INVALIDATE_ENG16_ACK)) & + (1 << vmid))) + cpu_relax(); ++ ++ spin_unlock(&adev->tlb_invalidation_lock); + } + + static int invalidate_tlbs_with_kiq(struct amdgpu_device *adev, uint16_t pasid) +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +index b84914c..f910159 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +@@ -2092,6 +2092,7 @@ int amdgpu_device_init(struct amdgpu_device *adev, + spin_lock_init(&adev->se_cac_idx_lock); + spin_lock_init(&adev->audio_endpt_idx_lock); + spin_lock_init(&adev->mm_stats.lock); ++ spin_lock_init(&adev->tlb_invalidation_lock); + + INIT_LIST_HEAD(&adev->shadow_list); + mutex_init(&adev->shadow_list_lock); +-- +2.7.4 + |