diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0932-drm-amdgpu-hold-reference-to-fences-in-amdgpu_sa_bo_.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0932-drm-amdgpu-hold-reference-to-fences-in-amdgpu_sa_bo_.patch | 52 |
1 files changed, 0 insertions, 52 deletions
diff --git a/common/recipes-kernel/linux/files/0932-drm-amdgpu-hold-reference-to-fences-in-amdgpu_sa_bo_.patch b/common/recipes-kernel/linux/files/0932-drm-amdgpu-hold-reference-to-fences-in-amdgpu_sa_bo_.patch deleted file mode 100644 index b68503f4..00000000 --- a/common/recipes-kernel/linux/files/0932-drm-amdgpu-hold-reference-to-fences-in-amdgpu_sa_bo_.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 6afa3557e6fc20e20c5f1d34bcc35fb42f76f601 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Nicolai=20H=C3=A4hnle?= <nicolai.haehnle@amd.com> -Date: Fri, 5 Feb 2016 10:59:43 -0500 -Subject: [PATCH 0932/1565] drm/amdgpu: hold reference to fences in - amdgpu_sa_bo_new (v2) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -An arbitrary amount of time can pass between spin_unlock and -fence_wait_any_timeout, so we need to ensure that nobody frees the -fences from under us. - -A stress test (rapidly starting and killing hundreds of glxgears -instances) ran into a deadlock in fence_wait_any_timeout after -about an hour, and this race condition appears to be a plausible -cause. - -v2: agd: rebase on upstream - -Signed-off-by: Nicolai Hähnle <nicolai.haehnle@amd.com> -Reviewed-by: Alex Deucher <alexander.deucher@amd.com> -Reviewed-by: Christian König <christian.koenig@amd.com> -Cc: stable@vger.kernel.org ---- - drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c -index 8b88edb..ca72a2e 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c -@@ -354,12 +354,15 @@ int amdgpu_sa_bo_new(struct amdgpu_sa_manager *sa_manager, - - for (i = 0, count = 0; i < AMDGPU_MAX_RINGS; ++i) - if (fences[i]) -- fences[count++] = fences[i]; -+ fences[count++] = fence_get(fences[i]); - - if (count) { - spin_unlock(&sa_manager->wq.lock); - t = fence_wait_any_timeout(fences, count, false, - MAX_SCHEDULE_TIMEOUT); -+ for (i = 0; i < count; ++i) -+ fence_put(fences[i]); -+ - r = (t > 0) ? 0 : t; - spin_lock(&sa_manager->wq.lock); - } else { --- -1.9.1 - |