From 48d10f659a21fd6d0dff5e073663f9689b549db4 Mon Sep 17 00:00:00 2001 From: Kirill Artamonov Date: Sun, 26 Jun 2011 21:37:18 +0300 Subject: video: tegra: nvmap: fix GART pin lockups Fix GART lockups caused by fragmentation by evicting mapped areas from iovm space after unsuccessful array pinning attempt. Fix double unpin error happening during interrupted submit. Fix possible sleep in atomic context in iovmm code (semaphore inside spinlock) by replacing spinlock with mutex. Fix race between handle_unpin and pin_handle. bug 838579 bug 838073 bug 818058 bug 844307 Conflicts: drivers/video/tegra/nvmap/nvmap_mru.c Reviewed-on: http://git-master/r/38430 (cherry picked from commit 4a4cae3323d3287e77fdc504e38656974ef24848) Change-Id: I385913569ef455a1ceb5083829959de24f5309a7 Reviewed-on: http://git-master/r/47832 Reviewed-by: Andre Sihera Tested-by: Andre Sihera Reviewed-by: Kirill Artamonov Reviewed-by: Bharat Nihalani --- drivers/video/tegra/nvmap/nvmap.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers/video/tegra/nvmap/nvmap.h') diff --git a/drivers/video/tegra/nvmap/nvmap.h b/drivers/video/tegra/nvmap/nvmap.h index 923ff8fc8d8a..48ea8debb80b 100644 --- a/drivers/video/tegra/nvmap/nvmap.h +++ b/drivers/video/tegra/nvmap/nvmap.h @@ -89,7 +89,7 @@ struct nvmap_share { wait_queue_head_t pin_wait; struct mutex pin_lock; #ifdef CONFIG_NVMAP_RECLAIM_UNPINNED_VM - spinlock_t mru_lock; + struct mutex mru_lock; struct list_head *mru_lists; int nr_mru; #endif -- cgit v1.2.3